我需要处理无限的HTTP响应(带有Transfer-Encoding: chunked
头)。
此响应包含一个映像流,因此必须尽可能有效地处理它。
XmlHttpRequest
是而不是,这是一个解决方案,因为它将所有的回复都保存在内存中。另外,如果读取ArrayBuffer
,在流结束之前不会填充响应,这意味着永远不会出现这种情况。
因此,由于我在Firefox下,TCPSocket
API似乎是我唯一的希望。
我已经开始实现一个脏的HTTP堆栈(这里和这里),从IMAP/SMTP实现中获得灵感,但它仍然是非常慢的。
因此,有两个问题:
PS:我与外部设备通信,所以服务器端的更改在这里是不可能的。
发布于 2015-09-20 23:58:21
正如MDN上的XMLHttpRequest文档所述,火狐实际上为流媒体数据提供额外的responseType
值(火狐操作系统也是如此),比如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!
https://stackoverflow.com/questions/32684998
复制相似问题