大猩猩 websocket 客户端读取消息错误



我有一个客户端 websocket 代码看起来像这样

c, _, err := websocket.DefaultDialer.Dial("<url>", nil)
if err != nil {
panic(err)
}
go func() {
defer close(clientResponse)
for {
_, message, err := c.ReadMessage()
if err != nil {
log.Fatal("Error reading: ", err)
break
}
clientResponse <- message
fmt.Printf("recv: %s", message)
}
}()

发生的事情是,在我停止向服务器端写入消息后,我的客户端抛出了来自ReadMessage方法的错误:

websocket: close 1006 (abnormal closure): unexpected EOF

任何人都知道此错误来自哪里以及如何修复它?到目前为止,我能想到的只是服务器/客户端有一个读/写截止日期,之后,它只是自动断开连接

EOF意味着您在文件的末尾并且无法再阅读,您可以将err == io.EOF添加到代码中,它可以工作。完整代码如下:

c, _, err := websocket.DefaultDialer.Dial("<url>", nil)
if err != nil {
panic(err)
}
go func() {
defer close(clientResponse)
for {
_, message, err := c.ReadMessage()
if err != nil || err == io.EOF {
log.Fatal("Error reading: ", err)
break
}
clientResponse <- message
fmt.Printf("recv: %s", message)
}
}()

最新更新