我正在使用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。
答案 0 :(得分:1)
首次通话的读取内容始终小于4KB,并且出于安全原因,长度受到限制,如果要增加,请设置:
ws.MaxPayloadBytes = xxxx
从第二个呼叫开始,您的味精将被填充。
如果您想在一次通话中阅读整条消息,请执行以下操作:
msg, err := ioutil.ReadAll(ws)