我的客户端网络套接字代码如下
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
任何人都知道此错误来自何处以及如何解决?到目前为止,我所能想到的是服务器/客户端都有一个读/写截止日期,在那之后,它会自动断开连接
答案 0 :(得分:0)
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)
}
}()