Reputation: 877
I need to handle an infinite HTTP response (with Transfer-Encoding: chunked
header).
This response contains a stream of images, so it must be handled as efficiently as possible.
XmlHttpRequest
is not a solution here since it keeps all the reply in memory. Plus, if reading ArrayBuffer
, the response isn't populated before the end of streaming, which means never here.
So, since I am under Firefox OS, the TCPSocket
API seems to be my only hope.
I already started to implement a dirty HTTP stack (here and here), getting inspiration from the IMAP/SMTP implementations but it is still very slow.
So, two questions:
Is it worth spending time on this, or did I miss something easier?
If I want to implement it, what are the best practices not to foget about?
PS: I communicate with an external device, so changes on the server side are just not possible here.
Upvotes: 2
Views: 91
Reputation: 877
As stated by the XMLHttpRequest doc on MDN, Firefox actually makes available extra responseType
values (and so does Firefox OS) for streaming data, like 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();
Thanks to fabrice on #[email protected]!
Upvotes: 1