fix: adding beforeReconnectFn for reconnecting

This commit is contained in:
2026-03-30 15:52:39 +07:00
parent a9e36708e8
commit 8995cbd846

View File

@@ -173,8 +173,9 @@ type SafeWebsocketClient struct {
isConnected bool isConnected bool
doneMap *safemap.SafeMap[string, chan struct{}] doneMap *safemap.SafeMap[string, chan struct{}]
writeChan chan Message writeChan chan Message
monitor *internal.MemoryMonitor monitor *internal.MemoryMonitor
beforeReconnectFn func()
} }
@@ -288,6 +289,9 @@ func (wsClient *SafeWebsocketClient) reconnectHandler() {
continue continue
} }
log.Println("Reconnected successfully") log.Println("Reconnected successfully")
if wsClient.beforeReconnectFn != nil {
wsClient.beforeReconnectFn()
}
backoff = 1 * time.Second backoff = 1 * time.Second
isInnerLoop = false isInnerLoop = false
continue 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{} { func (wsClient *SafeWebsocketClient) ReconnectChannel() <-chan struct{} {
reconnectCh := make(chan struct{}, 1) reconnectCh := make(chan struct{}, 1)
wsClient.mu.WriteHandler(func() error { wsClient.mu.WriteHandler(func() error {