golang websocket数据不正确
我正在使用golang websocket数据不正确,go,websocket,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 {
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
值始终为4092,即使msg
非常大。第一次调用的读数始终小于4KB,出于安全原因,长度是有限的,如果要增加,请设置:
ws.MaxPayloadBytes = xxxx
从第二次呼叫开始,您的msg将被填充
如果您想在一次通话中阅读整个信息,请执行以下操作:
msg, err := ioutil.ReadAll(ws)
我使用了这个方法示例:我发现这个设置不起作用,最后,我使用了这个lib
github.com/gorilla/websocket
,它现在起作用了。