0

I am trying to create chat application. Constantly facing websocket connection closing with status 1006 even though ping pong is established. How to deal with the disconnection? The package we are using is github.com/gofiber/websocket/v2

1 Answers1

0

checkout ikisocket fiber wrapper for one such example.

func (kws *Websocket) send(ctx context.Context) {
    for {
        select {
        case message := <-kws.queue:
            if !kws.hasConn() {
                if message.retries <= MaxSendRetry {
                    // retry without blocking the sending thread
                    go func() {
                        time.Sleep(RetrySendTimeout)
                        message.retries = message.retries + 1
                        kws.queue <- message
                    }()
                }
                continue
            }

            kws.mu.RLock()
            err := kws.ws.WriteMessage(message.mType, message.data)
            kws.mu.RUnlock()

            if err != nil {
                kws.disconnected(err)
            }
        case <-ctx.Done():
            return
        }
    }
}

mohammad
  • 2,568
  • 3
  • 20
  • 41