Gorilla Websocket客户端读取消息错误

时间:2019-12-27 02:06:30

标签: go websocket gorilla

我的客户端网络套接字代码如下

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

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

1 个答案:

答案 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)
    }
}()