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 {