订阅线路的类型、延迟和测速都改走 provider 接口
404 不是 bug。内核的 /proxies 只返回全局名字表(内置出站、自有线路、策略组),
订阅线路不在里面——跟「订阅线路不能被入站直接引用」是同一条约束,我没想到它同样
适用于运行时接口。所以 /proxies/{订阅线路}/delay 一律 404,而订阅线路的卡片也一直
没有协议和延迟,因为那些数据同样查不到。
现在运行时状态从两处合成:/proxies 给内置出站和策略组,/providers/proxies 给订阅线路
(它返回的线路本来就带完整的协议和延迟历史)。测速按线路归属选接口,订阅线路走
{订阅}/{线路}/healthcheck。实测该接口对同一条线路返回 200 和 325 毫秒。
This commit is contained in:
@@ -20,6 +20,8 @@ const props = defineProps<{
|
||||
revision: string
|
||||
kernelOnline: boolean
|
||||
providerLines: string[]
|
||||
/** 订阅线路 → 所属订阅 */
|
||||
lineProvider: Record<string, string>
|
||||
runtime: Record<string, ProxyInfo>
|
||||
}>()
|
||||
|
||||
@@ -182,6 +184,9 @@ function describeTestFailure(name: string, error: unknown): string {
|
||||
|
||||
const detail = String(error.payload.message ?? '')
|
||||
const generic = detail === '' || detail === 'An error occurred in the delay test'
|
||||
if (error.status === 404) {
|
||||
return `${name} 不在内核的出站表里,无法测试。订阅线路需要从所属订阅进去测。`
|
||||
}
|
||||
if (error.status === 503) {
|
||||
return generic
|
||||
? `${name} 无法建立连接,线路可能已失效,或本机到该服务器的网络不通`
|
||||
@@ -195,7 +200,7 @@ async function testLine(name: string) {
|
||||
if (testing.value.includes(name)) return
|
||||
testing.value = [...testing.value, name]
|
||||
try {
|
||||
await api.testLine(name, undefined, TEST_TIMEOUT_MS)
|
||||
await api.testLine(name, props.lineProvider[name], TEST_TIMEOUT_MS)
|
||||
emit('changed')
|
||||
} catch (error) {
|
||||
// 测不通是关于线路的结论,不是 Patchbay 出了故障,所以不用错误框
|
||||
|
||||
Reference in New Issue
Block a user