From d09d389011ee4b7625f753a9a5d28212f6e39dc2 Mon Sep 17 00:00:00 2001 From: Roger Ferdinan Date: Tue, 30 Sep 2025 06:59:01 +0700 Subject: [PATCH] fix: initialize write channel --- v1/client/client.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/v1/client/client.go b/v1/client/client.go index 04d82b1..39f4a6e 100644 --- a/v1/client/client.go +++ b/v1/client/client.go @@ -156,6 +156,7 @@ func (b *SafeWebsocketClientBuilder) Build(ctx context.Context) (*SafeWebsocketC reconnectCh: make(chan struct{}, 1), isConnected: false, doneMap: NewSafeMap[string, chan struct{}](), + writeChan: make(chan Message), } if b.authenticateFn != nil { @@ -404,11 +405,15 @@ func (wsClient *SafeWebsocketClient) reconnectHandler() { case <-wsClient.reconnectCh: log.Println("Reconnect triggered") - if wsClient.cancelFuncs != nil { - for _, cancel := range wsClient.cancelFuncs { - cancel() + wsClient.mu.ReadHandler(func() error { + if wsClient.cancelFuncs != nil { + for _, cancel := range wsClient.cancelFuncs { + cancel() + } } - } + return nil + }) + wsClient.isConnected = false time.Sleep(100 * time.Millisecond) @@ -470,11 +475,14 @@ func (wsClient *SafeWebsocketClient) Write(data []byte) error { } func (wsClient *SafeWebsocketClient) Close() error { - if wsClient.cancelFuncs != nil { - for _, cancel := range wsClient.cancelFuncs { - cancel() + wsClient.mu.ReadHandler(func() error { + if wsClient.cancelFuncs != nil { + for _, cancel := range wsClient.cancelFuncs { + cancel() + } } - } + return nil + }) if wsClient.reconnectChans != nil { for _, reconnectChan := range wsClient.reconnectChans {