Gau*_*hor 16 javascript string json websocket atmosphere
我通过websockets发送大量的JSON数据.JSON可能有超过1000个条目.由于帧大小限制,Websocket协议自动将JSON分成帧,这是无法帮助的.因为我们无法改变websockets的框架大小.
问题:
当我尝试使用JSON.parse它来评估我的JSON时,给出了一个解析错误,这很明显,因为这些帧不是完整的JSON对象.所有这些都发生在Websocket onmessage事件回调中.如何在不同的帧中接收巨大的JSON并仍然能够解析它?我试图在onmessage仍然错误仍然存在的情况下连接帧.
问题:
如何正确地破解破解的JSON?
Joa*_*elt 27
根据RFC-6455基本帧,单个WebSocket帧的最大大小限制为2 ^ 63字节(9,223,372,036,854,775,807字节〜= 9.22 艾字节)(由@Sebastian校正)
但是,由1个或多个帧组成的WebSocket消息对协议级别没有限制.
每个WebSocket实现都将以不同方式处理消息和帧限制.例如为整个消息设置最大消息大小(通常是出于内存消耗的原因),或者为大消息提供流选项以更好地利用内存.
但在您的情况下,您所选择的WebSocket实现可能存在错误,并且不正确地将JSON消息拆分为多个消息,而不是多个消息.您可以使用Chrome中的网络检查工具或Wireshark等外部工具来确认此行为.
小智 7
var wsServer = new websocket.server({
httpServer: server,
maxReceivedFrameSize: 131072,
maxReceivedMessageSize: 10 * 1024 * 1024,
autoAcceptConnections: false
});
Run Code Online (Sandbox Code Playgroud)
更改默认的 maxFrameSize 和 MessageSize