WebSockets和XHR在处理大量数据时的区别

11

我正在NodeJS上运行SocketIO,不太关心广泛的浏览器支持,因为这是我的个人项目,我想利用新技术的所有力量来简化开发。我的关注点是如何从服务器向客户端发送大量JSON数据以及如何回传数据。好吧,这些数据量并不像视频或者图像二进制数据那样大,我认为每个请求不会超过几百千字节。

我看到两种场景:

  1. 通过WebSockets从服务器向客户端发送通知,表明某些数据应该被获取。然后客户端代码运行常规的XHR请求到服务器,并通过XHR获取一些数据。
  2. 通过WebSockets将整个数据集从服务器发送到客户端。在这种情况下,我不需要运行任何其他请求-我只需通过WebSockets获取所有数据。

我在Meteor.js中看到了第一种情况,所以我想知道它的原因。 请分享你的意见。


2
也许这可以帮助:https://dev59.com/HWcs5IYBdhLWcg3wPxrN - jAndy
1个回答

7
Websockets应该支持大数据集(在理论上高达16 exabyte),所以从这个角度来看,它应该可以正常工作。XHR的优点是您将能够随着时间的推移观察进展,并且通常更适用于大数据块的测试。例如,我曾经看到过WebSocket服务器实现,它们(回想起来)不能很好地处理大型数据,因为它们会将整个数据加载到内存中(而不是流式传输数据),但这当然不一定适用于socket.io(不知道)。重点是:在观察内存使用和稳定性的同时尝试使用socket.io。如果它有效,请肯定选择Websockets,因为从长远来看,对于大数据包的支持只会变得越来越好,而绝不会变差。如果它不稳定或者socket.io无法流式传输较大的数据文件,则使用XHR构造。

顺便说一句,仅仅通过谷歌搜索就找到了siofile,没有深入研究,但它可能正是您需要的东西。


你应该尝试与Sergey取得联系,询问他是否进行了一些测量/尝试,如果是的话,那将是非常有价值的信息;-) 我所能分享的只是理论和相关的github项目。 - David Mulder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接