【问题标题】:Efficient HTTP streaming in Firefox OSFirefox OS 中的高效 HTTP 流式传输
【发布时间】:2015-09-20 22:32:07
【问题描述】:

我需要处理无限的 HTTP 响应(带有 Transfer-Encoding: chunked 标头)。

此响应包含图像流,因此必须尽可能高效地处理。

XmlHttpRequest 在这里不是解决方案,因为它将所有回复保存在内存中。另外,如果读取ArrayBuffer,则在流式传输结束之前不会填充响应,这意味着永远不会出现。

所以,由于我在 Firefox OS 下,TCPSocket API 似乎是我唯一的希望。

我已经开始实现脏 HTTP 堆栈(herehere),从 IMAP/SMTP 实现中获得灵感,但它仍然非常慢。

那么,两个问题:

  1. 值得花时间在这上面,还是我错过了一些更容易的事情?

  2. 如果我想实现它,最好不要忘记哪些最佳实践?

PS:我与外部设备通信,因此无法在服务器端进行更改。

【问题讨论】:

  • 类似无限请求的例子可以在Twitter API中找到

标签: javascript http xmlhttprequest firefox-os tcpsocket


【解决方案1】:

正如the XMLHttpRequest doc on MDN 所述,Firefox 实际上为流数据提供了额外的responseType 值(Firefox OS 也是如此),例如moz-chunked-arraybuffer

var xhr = new XMLHttpRequest({ mozSystem: true });
xhr.responseType = "moz-chunked-arraybuffer";
xhr.open('GET', deviceStreamingUrl);
xhr.addEventListener('progress', event => {
  processChunk(xhr.response);
});
xhr.send();

感谢 #fxos@irc.mozilla.org 上的 fabrice!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多