From e0a110cad3961c7a22d6978510b7c8dbe4e032b8 Mon Sep 17 00:00:00 2001 From: yusing Date: Sun, 17 Aug 2025 14:53:25 +0800 Subject: [PATCH] fix(websocket): ensure proper connection closure and stop ping check ticker in Close method --- internal/net/gphttp/websocket/manager.go | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/internal/net/gphttp/websocket/manager.go b/internal/net/gphttp/websocket/manager.go index 305df03d..3ae5a247 100644 --- a/internal/net/gphttp/websocket/manager.go +++ b/internal/net/gphttp/websocket/manager.go @@ -185,18 +185,15 @@ func (cm *Manager) ReadJSON(out any, timeout time.Duration) error { // Close closes the connection and cancels the context func (cm *Manager) Close() { cm.cancel() - cm.pingCheckTicker.Stop() - cm.conn.Close() -} -func (cm *Manager) GracefulClose() { cm.writeLock.Lock() defer cm.writeLock.Unlock() _ = cm.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) _ = cm.conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) + cm.conn.Close() - cm.Close() + cm.pingCheckTicker.Stop() } // Done returns a channel that is closed when the context is done or the connection is closed