2013-04-29 37 views
10

我在NodeJS上运行SocketIO,我不太在意广泛的浏览器支持,因为它是我的宠物项目,我希望使用新技术的所有功能来简化开发。我关心的是如何从服务器向客户端发送大量JSON数据。那么,这些数量并不像视频或图像二进制数据那么大,我认为每个请求的数据量不会超过几百千字节。WebSockets vs XHR大数据量

两个场景我看到的是:

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

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

+2

也许这有助于http://stackoverflow.com/questions/13010354/chunking-websocket-transmission – jAndy 2013-04-29 12:04:15

回答

5

网络套接字应该支持大数据集(在理论中高达16艾字节),所以从这个角度来看,它应该可以正常工作。 XHR的优势在于,您将能够观察一段时间内的进展情况,并且通常可以更好地测试大数据块。例如,我已经看到websocket服务器实现(回顾思考)不能很好地处理大数据,因为它们会将整个数据加载到内存中(而不是流式传输数据),但这当然不一定适用于套接字。 io(dunno)。注意事项:使用socket.io尝试一下,同时观察内存使用情况和稳定性。如果可行,肯定会使用websockets,因为长期以来对大数据包的支持只会变得更好,绝对不会变得更糟。如果结果不稳定或者socket.io无法传输更大的数据文件,则使用XHR结构。

顺便说一句,只是一个谷歌搜索出现了siofile,还没有看到这么多,但它可能只是你需要的东西。

+0

谢谢。为了它的价值,我希望这是准确的。 – zallarak 2013-06-03 18:18:24

+0

您应该尝试与Sergey联系,看他是否进行了一些测量/尝试,如果他这样做会是非常有价值的信息;-)我所能分享的只是理论和相关的github项目。 – 2013-06-04 12:31:48