登录
首页 >  Golang >  Go问答

Gorilla websocket客户端读取消息错误

来源:stackoverflow

时间:2024-04-15 08:18:35 485浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Gorilla 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:关闭1006(异常关闭):意外的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)
    }
}()

以上就是《Gorilla websocket客户端读取消息错误》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>