11

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

我看到的两种情况是:

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

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

4

1 回答 1

7

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

顺便说一句,只是谷歌搜索出现了siofile,并没有过多地研究它,但它可能正是你需要的东西。

于 2013-04-29T12:10:13.160 回答