gpt4 book ai didi

转到 websocket 错误 : close 1006 (abnormal closure): unexpected EOF

转载 作者:行者123 更新时间:2023-12-01 22:14:53 28 4
gpt4 key购买 nike

我正在尝试使用 gorilla/websocket 编写一个简单的 go websocket 服务器

http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
if os.Getenv("env") == "development" {
upgrader.CheckOrigin = func(r *http.Request) bool { return true }
}

conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Printf("Websocket error: %s", err)
return
}

defer conn.Close()

// Register client
clients[conn] = true

for {
message := message.Message{}
_, msg, err := conn.ReadMessage()
if err != nil {
log.Printf("Websocket error: %s", err)
return
}

res, _ = json.Marshal(context.Game)

// Send to every client that is currently connected
for client := range clients {
err := client.WriteMessage(websocket.TextMessage, res)
if err != nil {
// Remove connection
client.Close()
delete(clients, client)
}
}
}
})
_, msg, err := conn.ReadMessage()行抛出错误并关闭 websocket,但我不知道为什么。

错误是 close 1006 (abnormal closure): unexpected EOF .我怎样才能防止这种情况?

最佳答案

该错误表明对等方关闭了连接而没有发送关闭消息。 RFC 将此称为“异常关闭”,但接收到的错误是正常的。

使用IsUnexpectedCloseError过滤掉预期的关闭错误。 Gorilla Chat Example显示如何使用该函数 (view code here)。

问题中的应用程序在 clients 上存在数据竞争。正如阿德里安指出的那样。 Gorilla 聊天示例展示了如何在没有数据竞争的情况下维护客户 map (hub)。

关于转到 websocket 错误 : close 1006 (abnormal closure): unexpected EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61108552/

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