diff --git a/client/lib/state/nodes_provider.dart b/client/lib/state/nodes_provider.dart index 41b9665..9793a41 100644 --- a/client/lib/state/nodes_provider.dart +++ b/client/lib/state/nodes_provider.dart @@ -13,6 +13,7 @@ import '../models/node.dart'; import '../services/api_config.dart'; import '../services/latency_probe.dart'; import 'auth_provider.dart'; +import 'connection_provider.dart'; // ── 节点列表 AsyncNotifier ──────────────────────────────────────── @@ -101,6 +102,10 @@ class NodesNotifier extends AsyncNotifier> { /// 不把已知延迟覆盖成空——否则连上后节点列表延迟会整列消失。 Future _measure(List list) async { if (list.isEmpty) return; + // 连接态:全局 TUN 把「到节点的直连 TCP 握手」在本地接住,connect() 几毫秒就返回 + // (假值,非真实 RTT)。这会覆盖掉内核 urltest 经 setLivePing 回写的真实延迟(连接页 + // 因此显示 ~3ms)。连接时延迟只认 urltest,跳过直连实测;断开后再恢复实测。 + if (ref.read(connectionProvider).phase == VpnPhase.on) return; final pings = await probeAll( [for (final n in list) (uuid: n.uuid, host: n.host, port: n.port)], );