From c3bb2523efe14d024f9669d2724d6fcac5b16f32 Mon Sep 17 00:00:00 2001 From: engigu Date: Thu, 1 Jan 2026 12:52:06 +0800 Subject: [PATCH] fix: agent ws connect panic --- agent/agent.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/agent/agent.go b/agent/agent.go index 1442aa7..c3e7c2e 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -189,6 +189,22 @@ func (a *Agent) connectWS() error { return err } + // 设置读取超时(比服务端 ping 间隔长一些) + conn.SetReadDeadline(time.Now().Add(60 * time.Second)) + + // 设置 Ping 处理器,收到 Ping 时重置读取超时 + conn.SetPingHandler(func(appData string) error { + conn.SetReadDeadline(time.Now().Add(60 * time.Second)) + // 回复 Pong + return conn.WriteControl(websocket.PongMessage, []byte(appData), time.Now().Add(5*time.Second)) + }) + + // 设置 Pong 处理器,收到 Pong 时重置读取超时 + conn.SetPongHandler(func(appData string) error { + conn.SetReadDeadline(time.Now().Add(60 * time.Second)) + return nil + }) + a.wsMu.Lock() a.wsConn = conn a.wsStopCh = make(chan struct{}) @@ -231,6 +247,9 @@ func (a *Agent) readWS() { return } + // 收到消息,重置读取超时 + conn.SetReadDeadline(time.Now().Add(60 * time.Second)) + var msg WSMessage if err := json.Unmarshal(message, &msg); err != nil { continue