【发布时间】:2011-12-18 15:24:53
【问题描述】:
我正在使用一些客户端 JavaScript 代码通过 HTTP GET 从网络服务器中提取大量 JSON 数据。数据量可能很大,例如 50 MB。这是在局域网上,所以问题不大,但仍然需要十秒钟左右。
为了使我的界面更具响应性,我想以块的形式处理响应,并在数据可用时立即在 UI 中显示数据(比如说,每 MB 或每秒)。浏览器兼容性不是问题;只要它适用于最新的 Chrome 和 Firefox 就可以了。但是,我无法修改服务器代码。
是否可以使用 XMLHttpRequest 或 WebSockets 或其他我没听说过的技术来做到这一点?
XMLHttpRequest.responseText 在状态为LOADING 时未明确为空:
responseText 属性必须返回运行这些步骤的结果:
- 如果状态不是 LOADING 或 DONE,则返回空字符串并终止这些步骤。
- 返回文本响应实体正文。
但我想缓冲会在沿途的各个阶段发生,所以如果我设置一个计时器来定期轮询responseText,它会起作用吗?
据我所知,WebSockets 在服务器端也需要一个特殊的协议,所以这些都没有了。
限制:我不能修改服务器代码。
【问题讨论】:
-
这可能不是一个可行的解决方案,但您可以创建第二个服务器,从第一个服务器中获取数据块(Node.js 可以很容易地用于此),然后发送使用 WebSockets 立即将每个块接收到客户端时的数据。还有适用于 Node.js 的 WebSockets 库,所以应该不会太难。
-
有趣的想法,但我不能轻易做到这一点有几个原因。
标签: javascript ajax http websocket