From a43f8a93dedcc9f044a92bf3c7ecef9d9d4752bc Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Tue, 30 Jun 2026 12:25:33 +0800 Subject: [PATCH] =?UTF-8?q?diag(client/macos):=20StatsClient=20=E6=AF=8F5?= =?UTF-8?q?=E5=B8=A7=E6=89=93=E5=8D=B0=E6=94=B6=E5=88=B0=E7=9A=84=20urltes?= =?UTF-8?q?t=20=E5=BB=B6=E8=BF=9F,=E6=8E=92=E6=9F=A5=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E9=A1=B5=E5=BB=B6=E8=BF=9F=E4=B8=BA=20=E2=80=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- client/macos/Runner/StatsClient.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/client/macos/Runner/StatsClient.swift b/client/macos/Runner/StatsClient.swift index 530cfe6..265128f 100644 --- a/client/macos/Runner/StatsClient.swift +++ b/client/macos/Runner/StatsClient.swift @@ -20,6 +20,7 @@ final class StatsClient: NSObject { private let queue = DispatchQueue(label: "pangolin.stats.client") private weak var session: NETunnelProviderSession? private var timer: DispatchSourceTimer? + private var diagTick = 0 // 诊断:每 5 帧打一次 urltest,排查延迟为何不刷新 // ── 生命周期 ──────────────────────────────────────────────── @@ -61,6 +62,14 @@ final class StatsClient: NSObject { NSLog("[pangolin/stats] bad stats payload (%d bytes)", resp.count) return } + // 诊断:确认 urltest 延迟是否随统计帧一起到达(连接页延迟靠它)。 + self.diagTick += 1 + if self.diagTick % 5 == 0 { + let urls = (obj["urltestResults"] as? [[String: Any]]) ?? [] + let pairs = urls.map { "\($0["tag"] ?? "?")=\($0["delayMs"] ?? -1)" }.joined(separator: ",") + NSLog("[pangolin/stats] dl=%@ ul=%@ urltest[%d]=%@", + "\(obj["downloadSpeed"] ?? 0)", "\(obj["uploadSpeed"] ?? 0)", urls.count, pairs) + } self.emit(obj) } } catch {