WebSockets与XHR之间的大量数据

时间:2013-04-29 11:54:51

标签: javascript node.js xmlhttprequest websocket socket.io

我在NodeJS上运行SocketIO,我并不关心广泛的浏览器支持,因为这是我的宠物项目,我希望利用新技术的所有功能来简化开发。我关心的是如何将大量的JSON数据从服务器发送到客户端并返回。好吧,这些数量不像视频或图像二进制数据那么大,我想每个请求不会超过几百KB。

我看到的两个场景是:

  1. 通过WebSockets从服务器向客户端发送通知,告知应该获取某些数据。然后客户端代码向服务器运行常规XHR请求,并通过XHR获取一些数据。
  2. 通过WebSockets将整个数据集从服务器发送到客户端。在这种情况下,我不需要运行任何其他请求 - 我只是通过WebSockets获取所有数据。
  3. 我在Meteor.js中看到了第一个案例,所以我想知道它的原因。 请分享您的意见。

1 个答案:

答案 0 :(得分:5)

Websockets应该支持大型数据集(理论中最多16 exabyte),所以从这个角度看它应该可以正常工作。 XHR的优势在于您将能够随着时间的推移观察进度,并且通常可以更好地测试大数据块。例如,我已经看到了websocket服务器实现(回顾性地思考)不能很好地处理大数据,因为它们会将整个数据加载到内存中(而不是流式传输数据),但这当然不一定是socket的情况。 io(dunno)。以防万一:使用socket.io试一试,同时观察内存使用情况和稳定性。如果它工作,绝对使用websockets,因为长期来看,对大数据包的支持只会变得更好,绝对不会更糟。如果结果是不稳定或者socket.io无法传输更大的数据文件,那么使用XHR结构。

顺便说一句,只是谷歌搜索出现siofile,没有那么多关注它,但它可能只是你需要的东西。

相关问题