javascript - 用于大量数据的 WebSockets 与 XHR

标签 javascript node.js xmlhttprequest websocket socket.io

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

我看到的两种情况是:

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

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

最佳答案

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

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

关于javascript - 用于大量数据的 WebSockets 与 XHR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16278043/

相关文章:

node.js - 编辑 npm 库并通过热重载实时查看更改?

php - 如何验证 "php://input"是否已设置且不为空

ajax - 当 ajax 目标为 localhost 时,IE 10 和 11 中的访问被拒绝

javascript - 内容未被从被覆盖的元素内部删除

node.js - "Simple"使用 Node/mongo/express 的 RESTful API

node.js - 运行 Nightwatch 时如何增加内存使用量

javascript - XHR responseText 为空字符串

javascript - react 级联渲染

javascript - 为什么不想使用 `--save` 选项进行 npm 安装?

javascript - 在 javascript 中使用 angular.js 的数据绑定(bind)/或更新事件上的 javascript 变量