From 8995cbd846326a240b15c5562b9a1a15a95e9af6 Mon Sep 17 00:00:00 2001 From: Roger Ferdinan Date: Mon, 30 Mar 2026 15:52:39 +0700 Subject: [PATCH] fix: adding beforeReconnectFn for reconnecting --- v1/client/client.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/v1/client/client.go b/v1/client/client.go index 054236d..b9fcd8d 100644 --- a/v1/client/client.go +++ b/v1/client/client.go @@ -173,8 +173,9 @@ type SafeWebsocketClient struct { isConnected bool doneMap *safemap.SafeMap[string, chan struct{}] - writeChan chan Message - monitor *internal.MemoryMonitor + writeChan chan Message + monitor *internal.MemoryMonitor + beforeReconnectFn func() } @@ -288,6 +289,9 @@ func (wsClient *SafeWebsocketClient) reconnectHandler() { continue } log.Println("Reconnected successfully") + if wsClient.beforeReconnectFn != nil { + wsClient.beforeReconnectFn() + } backoff = 1 * time.Second isInnerLoop = false continue @@ -414,6 +418,20 @@ func (wsClient *SafeWebsocketClient) triggerReconnect() { } } +func (wsClient *SafeWebsocketClient) SetBeforeReconnect(fn func()) { + wsClient.mu.WriteHandler(func() error { + wsClient.beforeReconnectFn = fn + return nil + }) +} + +func (wsClient *SafeWebsocketClient) SetPath(path string) { + wsClient.mu.WriteHandler(func() error { + wsClient.path = &path + return nil + }) +} + func (wsClient *SafeWebsocketClient) ReconnectChannel() <-chan struct{} { reconnectCh := make(chan struct{}, 1) wsClient.mu.WriteHandler(func() error {