fix: fixing sudden disconnect for multiple connection
This commit is contained in:
@@ -34,13 +34,14 @@ type Message struct {
|
||||
}
|
||||
|
||||
type SafeWebsocketClientBuilder struct {
|
||||
baseHost *string `nil_checker:"required"`
|
||||
basePort *uint16 `nil_checker:"required"`
|
||||
path *string
|
||||
rawQuery *string
|
||||
isDrop *bool
|
||||
useTLS *bool
|
||||
channelSize *int64
|
||||
baseHost *string `nil_checker:"required"`
|
||||
basePort *uint16 `nil_checker:"required"`
|
||||
path *string
|
||||
rawQuery *string
|
||||
isDrop *bool
|
||||
useTLS *bool
|
||||
channelSize *int64
|
||||
writeChannelSize *int64
|
||||
}
|
||||
|
||||
func NewSafeWebsocketClientBuilder() *SafeWebsocketClientBuilder {
|
||||
@@ -82,6 +83,11 @@ func (b *SafeWebsocketClientBuilder) ChannelSize(channelSize int64) *SafeWebsock
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SafeWebsocketClientBuilder) WriteChannelSize(writeChannelSize int64) *SafeWebsocketClientBuilder {
|
||||
b.writeChannelSize = &writeChannelSize
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *SafeWebsocketClientBuilder) Build(ctx context.Context) (*SafeWebsocketClient, error) {
|
||||
if err := internal.NilChecker(b); err != nil {
|
||||
return nil, err
|
||||
@@ -103,6 +109,11 @@ func (b *SafeWebsocketClientBuilder) Build(ctx context.Context) (*SafeWebsocketC
|
||||
b.channelSize = &channelSize
|
||||
}
|
||||
|
||||
if b.writeChannelSize == nil {
|
||||
writeChannelSize := int64(1)
|
||||
b.writeChannelSize = &writeChannelSize
|
||||
}
|
||||
|
||||
wsClient := SafeWebsocketClient{
|
||||
baseHost: *b.baseHost,
|
||||
basePort: *b.basePort,
|
||||
@@ -116,7 +127,7 @@ func (b *SafeWebsocketClientBuilder) Build(ctx context.Context) (*SafeWebsocketC
|
||||
reconnectCh: make(chan struct{}, 1),
|
||||
isConnected: false,
|
||||
doneMap: safemap.NewSafeMap[string, chan struct{}](),
|
||||
writeChan: make(chan Message, 1),
|
||||
writeChan: make(chan Message, *b.writeChannelSize),
|
||||
}
|
||||
|
||||
go wsClient.reconnectHandler()
|
||||
@@ -193,19 +204,19 @@ func (wsClient *SafeWebsocketClient) connect() error {
|
||||
go wsClient.writePump()
|
||||
go wsClient.readPump()
|
||||
|
||||
conn.SetPingHandler(func(pingData string) error {
|
||||
wsClient.writeChan <- Message{
|
||||
MessageType: MessageTypePong,
|
||||
Data: []byte(pingData),
|
||||
}
|
||||
// conn.SetPingHandler(func(pingData string) error {
|
||||
// wsClient.writeChan <- Message{
|
||||
// MessageType: MessageTypePong,
|
||||
// Data: []byte(pingData),
|
||||
// }
|
||||
|
||||
select {
|
||||
case err := <-wsClient.pongChan:
|
||||
return err
|
||||
default:
|
||||
}
|
||||
return nil
|
||||
})
|
||||
// select {
|
||||
// case err := <-wsClient.pongChan:
|
||||
// return err
|
||||
// default:
|
||||
// }
|
||||
// return nil
|
||||
// })
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -374,7 +385,6 @@ func (wsClient *SafeWebsocketClient) reconnectHandler() {
|
||||
})
|
||||
|
||||
wsClient.isConnected = false
|
||||
// time.Sleep(100 * time.Millisecond)
|
||||
|
||||
isInnerLoop := true
|
||||
for isInnerLoop {
|
||||
|
||||
@@ -35,11 +35,11 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
go func() {
|
||||
for range wsClient.ReconnectChannel() {
|
||||
fmt.Println("Reconnection Success")
|
||||
}
|
||||
}()
|
||||
// go func() {
|
||||
// for range wsClient.ReconnectChannel() {
|
||||
// fmt.Println("Reconnection Success")
|
||||
// }
|
||||
// }()
|
||||
|
||||
dataChannel := wsClient.DataChannel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user