WebSockets与XHR之间的大量数据

Ser*_*rov 10 javascript xmlhttprequest websocket node.js socket.io

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

我看到的两个场景是:

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

我在Meteor.js中看到了第一个案例,所以我想知道它的原因.请分享您的意见.

Dav*_*der 5

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

顺便说一句,只是一个谷歌搜索出现了siofile,没有那么多的调查,但它可能只是你需要的东西.