【发布时间】:2015-07-29 01:10:54
【问题描述】:
我正在寻找一种仅客户端的 JavaScript 解决方案,它可以以流式传输方式从 HTTP 服务器接收大型二进制文件到我的 Web 客户端,这样我可以在获得数据包后立即响应,而无需等待它们全部加载到内存中,我什至可以在处理完每个数据后丢弃数据,以减少内存占用。
我在网上搜索,发现通过 XMLHttpRequest 似乎不可能,原因有两个(引用自this article),
- XHR 阻止在请求完成之前访问二进制响应(具有 arraybuffer 响应类型)数据。
- XHR 响应本质上是一个大缓冲区,随着响应数据的到来,它会保持线性增长,这意味着它无法被垃圾收集。
我想知道这是否可以通过 websocket 实现,是否有任何好的开源已经解决了这个问题?我发现了一些看起来相关的东西,例如Oboe.js 和Binary.js,但它要么处理 JSON 流,要么需要服务器端支持。
【问题讨论】:
-
你有没有得到任何地方?我目前正在处理类似的问题。
-
@NickJennings 在下面看到我的回答,虽然它不是一个完整的解决方案,但它可以满足我的一些需求。
标签: javascript html web websocket xmlhttprequest