Golang WebSocket数据不正确

时间:2018-10-19 08:09:27

标签: go websocket

我正在使用x.net.websocket从WebSocket读取数据。 数据比较大。当我阅读它时,我无法完全阅读它,因此将其切断。 有什么办法解决吗?

func receiveWebsocket(ws *websocket.Conn) error {
    for {
        var msg = make([]byte, 1024*1024) // 1024kb
        m, err := ws.Read(msg) 
        if err != nil {
            log15.Error("ws read error", "error", err)
            return err
        }
        fmt.Println("length ---",m,  string(msg))
        response := string(msg[:m])
        assignmentWebsocket(response)
    }
}

根据日志,即使m非常大,msg的值也始终是4092。

1 个答案:

答案 0 :(得分:1)

首次通话的读取内容始终小于4KB,并且出于安全原因,长度受到限制,如果要增加,请设置:

ws.MaxPayloadBytes = xxxx

从第二个呼叫开始,您的味精将被填充。

如果您想在一次通话中阅读整条消息,请执行以下操作:

msg, err := ioutil.ReadAll(ws)