gpt4 book ai didi

websocket - 如何在 GO 中存储 websocket 连接

转载 作者:IT王子 更新时间:2023-10-29 01:53:16 25 4
gpt4 key购买 nike

我想将客户端 websocket 连接存储到 wsList 中,并统一发送响应。但它会返回“使用关闭的网络连接”。如何解决?

import {
"code.google.com/p/go.net/websocket"
...
}

var wsList []*websocket.Conn

func WShandler(ws *websocket.Conn) {
wsList = append(wsList, ws)
go sendmsg()
}

func sendmsg() {
for _, conn := range wsList {
if err := websocket.JSON.Send(conn, outmsg); err != nil {
fmt.Printf("%s", err) //"use of closed network connection"
}
}
}

最佳答案

连接 wsWsHandler 返回时关闭。要解决此问题,请阻止 WsHandler 通过循环读取消息返回直到检测到错误:

func WShandler(ws *websocket.Conn) {
wsList = append(wsList, ws)
go sendmsg()
for {
var s string
if err := websocket.Message.Receive(ws, &s); err != nil {
break
}
}
// remove ws from wsList here
}

wsList 上有一场比赛。用互斥体保护它。

关于websocket - 如何在 GO 中存储 websocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23607811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com