Websocket框架大小限制
Websocket frame size limitation
我正在通过websocket发送大量的JSON数据。JSON可能有1000多个条目。由于帧大小的限制,Websocket协议会自动将JSON拆分为帧,这是没有帮助的。因为我们无法更改websocket的帧大小。
问题:
当我尝试使用JSON.parse
评估JSON时,它会给我一个解析错误,这是显而易见的,因为帧不是完整的JSON对象。所有这些都发生在Websocket onmessage
事件回调中。我如何才能在不同的帧中接收到巨大的JSON,并且仍然能够解析它?我已经尝试在onmessage
中插入帧,但错误仍然存在。
附带问题:
如何正确地连接一个损坏的JSON?
根据RFC-6455基本帧,单个WebSocket帧的最大大小限制为2^63字节(9223372036854775807字节~=9.22 EB)(由@Sebastian更正)
然而,由1个或多个帧组成的WebSocket消息没有从协议级别对其施加限制。
每个WebSocket实现将以不同的方式处理消息和帧限制。例如为整个消息设置最大消息大小(通常是出于内存消耗的原因),或者为大型消息提供流选项以更好地利用内存。
但在您的情况下,您选择的WebSocket实现可能存在错误,并且不正确地将JSON消息拆分为多个消息,而不是多个帧。您可以使用Chrome中的网络检查工具或Wireshark等外部工具来确认这种行为。
var wsServer = new websocket.server({
httpServer: server,
maxReceivedFrameSize: 131072,
maxReceivedMessageSize: 10 * 1024 * 1024,
autoAcceptConnections: false
});
更改默认的maxFrameSize&MessageSize
由于您处理的是WS,它是低级别的,因此需要创建一个应用程序协议来处理通过多个WS帧发送的数据。由您来连接每个WS帧中的数据(顺便说一句,不要连接这些帧……连接每个帧的数据)。
基本上,您正在重新设计一个文件传输协议。
- chrome在WebSocket握手期间获取新错误
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 在play2框架中向json对象添加下拉列表项
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- Tomcat websocket is not working
- 如何在离子框架+有角度的框架中制作顶部标签
- 如何在另一个html文件的框架中包含图像
- 如何重置内嵌框架
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- WebSocket握手:意外的响应代码:404
- 用于图像和基于浏览器的图表的图表框架
- 没有装饰的小型浏览器框架
- Websocket赢得't打开连接
- Javascript connect to websocket
- Chrome开发工具中使用了哪些框架和库
- 闭包js框架-将ArrayBuffer转换为字符串
- 服务器端事件+客户端事件与Websocket
- 类似于Prism的Knockout js框架
- Websocket框架大小限制
- 无法在 Vaadin 的嵌入式框架上打开 websocket 连接