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 {