Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7457604e0f |
@@ -59,8 +59,6 @@ func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
|
||||||
|
|
||||||
var useTLS bool
|
var useTLS bool
|
||||||
if b.useTLS != nil {
|
if b.useTLS != nil {
|
||||||
useTLS = *b.useTLS
|
useTLS = *b.useTLS
|
||||||
@@ -72,8 +70,6 @@ func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) {
|
|||||||
useTLS: useTLS,
|
useTLS: useTLS,
|
||||||
path: b.path,
|
path: b.path,
|
||||||
rawQuery: b.rawQuery,
|
rawQuery: b.rawQuery,
|
||||||
ctx: ctx,
|
|
||||||
cancel: cancel,
|
|
||||||
dataChannel: make(chan []byte, 1),
|
dataChannel: make(chan []byte, 1),
|
||||||
mu: custom_rwmutex.NewCustomRwMutex(),
|
mu: custom_rwmutex.NewCustomRwMutex(),
|
||||||
reconnectCh: make(chan struct{}, 1),
|
reconnectCh: make(chan struct{}, 1),
|
||||||
@@ -81,7 +77,6 @@ func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := wsClient.connect(); err != nil {
|
if err := wsClient.connect(); err != nil {
|
||||||
cancel()
|
|
||||||
return nil, fmt.Errorf("failed to establish initial connection: %v", err)
|
return nil, fmt.Errorf("failed to establish initial connection: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,6 +137,9 @@ func (wsClient *SafeWebsocketClient) connect() error {
|
|||||||
})
|
})
|
||||||
|
|
||||||
wsClient.mu.WriteHandler(func() error {
|
wsClient.mu.WriteHandler(func() error {
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
wsClient.ctx = ctx
|
||||||
|
wsClient.cancel = cancel
|
||||||
wsClient.conn = conn
|
wsClient.conn = conn
|
||||||
wsClient.isConnected = true
|
wsClient.isConnected = true
|
||||||
return nil
|
return nil
|
||||||
@@ -177,7 +175,6 @@ func (wsClient *SafeWebsocketClient) startPingTicker() {
|
|||||||
func (wsClient *SafeWebsocketClient) startReceiveHandler() {
|
func (wsClient *SafeWebsocketClient) startReceiveHandler() {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-wsClient.reconnectCh:
|
|
||||||
case <-wsClient.ctx.Done():
|
case <-wsClient.ctx.Done():
|
||||||
log.Println("Reconnect handler stopped")
|
log.Println("Reconnect handler stopped")
|
||||||
return
|
return
|
||||||
@@ -210,8 +207,14 @@ func (wsClient *SafeWebsocketClient) triggerReconnect() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (wsClient *SafeWebsocketClient) reconnectHandler() {
|
func (wsClient *SafeWebsocketClient) reconnectHandler() {
|
||||||
for range wsClient.reconnectCh {
|
for {
|
||||||
wsClient.connect()
|
select {
|
||||||
|
case <-wsClient.reconnectCh:
|
||||||
|
wsClient.cancel()
|
||||||
|
wsClient.connect()
|
||||||
|
case <-wsClient.ctx.Done():
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user