Firefox OS中高效的HTTP流
Efficient HTTP streaming in Firefox OS
我需要处理一个无限的HTTP响应(与Transfer-Encoding: chunked
标头)。
此响应包含一个图像流,因此必须尽可能高效地处理。
XmlHttpRequest
是而不是,因为它将所有的应答保存在内存中。另外,如果读取ArrayBuffer
,则在流结束之前不会填充响应,这意味着永远不会在这里。
所以,因为我在Firefox操作系统下,TCPSocket
API似乎是我唯一的希望。
我已经开始实现一个肮脏的HTTP堆栈(这里和这里),从IMAP/SMTP实现中获得灵感,但它仍然非常慢。
那么,两个问题:
-
值得花时间在这上面吗,还是我错过了一些更容易的东西?
-
如果我想实现它,什么是最好的做法,不要忘记?
PS:我与外部设备通信,所以服务器端的更改在这里是不可能的。
正如MDN上的XMLHttpRequest文档所述,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();
感谢fabrice在#fxos@irc.mozilla.org!
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- //而不是在src=“”上使用http://"属性
- 我无法使用angularJs($http)访问服务器
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 如何将PHP get查询转换为Meteor's HTTP.get()
- 角度异步http自动完成
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 角度http服务器页面刷新404s
- http.listen()在运行时接受终端命令
- IIS动态HTTP响应标头
- spring和angularJS(我得到了类似HTTP状态404的错误)
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- Typescript angularjs$http获取响应类型(避免使用<any>)
- 如何从HTTP上下文对象中获取Post数据
- 使用插件收听Firefox标签的http请求
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- Meteor HTTP调用出现问题
- 如何在angular 2测试版的服务中高效地使用Http组件
- Firefox OS中高效的HTTP流