Firefox OS中的高效HTTP流媒体

时间:2015-09-20 22:32:07

标签: javascript http xmlhttprequest firefox-os tcpsocket

我需要处理无限的HTTP响应(使用Documentation标头)。

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

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

所以,由于我在Firefox OS下,Transfer-Encoding: chunked API似乎是我唯一的希望。

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

所以,有两个问题:

  1. 值得花时间在这上面,还是我更想念一些事情?

  2. 如果我想实施它,最好的做法是什么?

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

1 个答案:

答案 0 :(得分:1)

正如the XMLHttpRequest doc on MDN所述,Firefox实际上为流数据提供了额外的responseType值(Firefox操作系统也是如此),例如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!