【发布时间】:2022-03-10 03:17:23
【问题描述】:
我正在尝试创建聊天应用程序。即使建立了乒乓球,也会不断面对关闭状态为 1006 的 websocket 连接。如何处理断线?我们使用的包是github.com/gofiber/websocket/v2
【问题讨论】:
我正在尝试创建聊天应用程序。即使建立了乒乓球,也会不断面对关闭状态为 1006 的 websocket 连接。如何处理断线?我们使用的包是github.com/gofiber/websocket/v2
【问题讨论】:
结帐ikisocket fiber wrapper 以获取此类示例。
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
}
}
}
【讨论】: