From cf63683c9cbcf3726a97b2472554d70647bf6952 Mon Sep 17 00:00:00 2001 From: Roger Ferdinan Date: Tue, 30 Sep 2025 10:43:39 +0700 Subject: [PATCH] fix: fixing panic on pong write message --- v1/client/client.go | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/v1/client/client.go b/v1/client/client.go index 4e37d79..86d1471 100644 --- a/v1/client/client.go +++ b/v1/client/client.go @@ -220,19 +220,6 @@ func (wsClient *SafeWebsocketClient) connect() error { return fmt.Errorf("failed to connect to %s: %w", wsClient.baseHost, err) } - conn.SetPingHandler(func(pingData string) error { - if err := conn.WriteMessage(websocket.PongMessage, []byte(pingData)); err != nil { - if err == websocket.ErrCloseSent { - return nil - } - if netErr, ok := err.(interface{ Timeout() bool }); ok && netErr.Timeout() { - return nil - } - return err - } - return nil - }) - pingCtx, pingCancel := context.WithCancel(context.Background()) wsClient.mu.WriteHandler(func() error { wsClient.cancelFuncs = append(wsClient.cancelFuncs, pingCancel) @@ -336,6 +323,23 @@ func (wsClient *SafeWebsocketClient) connect() error { } }() + conn.SetPingHandler(func(pingData string) error { + wsClient.writeChan <- Message{ + MessageType: MessageTypePong, + Data: []byte(pingData), + } + // if err := conn.WriteMessage(websocket.PongMessage, []byte(pingData)); err != nil { + // if err == websocket.ErrCloseSent { + // return nil + // } + // if netErr, ok := err.(interface{ Timeout() bool }); ok && netErr.Timeout() { + // return nil + // } + // return err + // } + return nil + }) + return nil }