From fa11551e26fef76305e4803f27938a0237594dfe Mon Sep 17 00:00:00 2001 From: shinosaki Date: Sat, 1 Mar 2025 10:16:05 +0000 Subject: [PATCH] =?UTF-8?q?[add]=20onOpen=E3=81=ABisReconnecting=E5=BC=95?= =?UTF-8?q?=E6=95=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example.go | 10 +++++++--- websocket/client.go | 9 +++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/example.go b/example.go index 25c2ff5..b1ca7bc 100644 --- a/example.go +++ b/example.go @@ -16,8 +16,12 @@ const ( func main() { ws := websocket.NewWebSocketClient( // onOpen - func(ws *websocket.WebSocketClient) { - log.Println("Connected") + func(ws *websocket.WebSocketClient, isReconnecting bool) { + if isReconnecting { + log.Println("Reconnected") + } else { + log.Println("Connected") + } }, // onClose @@ -36,7 +40,7 @@ func main() { ) // Connect to server - if err := ws.Connect(WEBSOCKET_URL, ATTEMPTS, INTERVAL); err != nil { + if err := ws.Connect(WEBSOCKET_URL, ATTEMPTS, INTERVAL, false); err != nil { log.Println("Failed to connect:", err) } diff --git a/websocket/client.go b/websocket/client.go index d1044be..c9d2121 100644 --- a/websocket/client.go +++ b/websocket/client.go @@ -17,13 +17,13 @@ type WebSocketClient struct { wg sync.WaitGroup ctx context.Context cancel context.CancelFunc - onOpen func(ws *WebSocketClient) + onOpen func(ws *WebSocketClient, isReconnecting bool) onClose func(ws *WebSocketClient, isReconnecting bool) onMessage func(ws *WebSocketClient, payload []byte) } func NewWebSocketClient( - onOpen func(ws *WebSocketClient), + onOpen func(ws *WebSocketClient, isReconnecting bool), onClose func(ws *WebSocketClient, isReconnecting bool), onMessage func(ws *WebSocketClient, payload []byte), ) *WebSocketClient { @@ -41,6 +41,7 @@ func (ws *WebSocketClient) Connect( webSocketUrl string, attempts int, interval time.Duration, + isReconnecting bool, ) (err error) { ws.URL, err = url.Parse(webSocketUrl) if err != nil { @@ -61,7 +62,7 @@ func (ws *WebSocketClient) Connect( } if ws.onOpen != nil { - ws.onOpen(ws) + ws.onOpen(ws, isReconnecting) } // Message Handler @@ -103,7 +104,7 @@ func (ws *WebSocketClient) Disconnect(isReconnecting bool) { func (ws *WebSocketClient) Reconnect(url string, attempts int, interval time.Duration) error { ws.Disconnect(true) ws.ctx, ws.cancel = context.WithCancel(context.Background()) - return ws.Connect(url, attempts, interval) + return ws.Connect(url, attempts, interval, true) } func (ws *WebSocketClient) SendJSON(v any) error {