重构了upstream可用性检测功能,从原来的WebSocket实时检测改为后台定时任务方式,提供更高效和稳定的监控。
cache.RegisterCallback
注册 ParseProxyTargetsFromRawContent
自动收集所有配置文件中的代理目标UpstreamService
单例服务管理所有代理目标和检测结果保留了两个简洁的接口:
/api/upstream/availability
返回数据:
{
"results": {
"127.0.0.1:8080": {
"online": true,
"latency": 1.23
}
},
"targets": [...],
"last_update_time": "2024-01-01T00:00:00Z",
"target_count": 10
}
/api/upstream/availability/ws
host:port
作为唯一标识curl http://localhost:9000/api/upstream/availability
const ws = new WebSocket('ws://localhost:9000/api/upstream/availability/ws');
ws.onmessage = (event) => {
const results = JSON.parse(event.data);
console.log('Upstream status:', results);
};