[whatwg] Binary Streaming with XHR

Jussi Kalliokoski jussi.kalliokoski at gmail.com
Fri Aug 24 03:23:03 PDT 2012


I've got a little proposal to solve a problem we're facing with one of our
codebases ( aurora.js [1], i.e. audio codecs in JavaScript ).

We need to stream the audio files (you don't want to store a 2 hour long
live stream in the memory or wait until a whole file is loaded before
playing). Currently we're using partial requests to fetch the data, but
it's very expensive both in terms of CPU (currently the streaming takes
more CPU than the actual decoding, I suspect this is a sum of garbage
collection and other factors) and network.

My proposal is that we add a feature for streaming to XHRs that are of the
arraybuffer response type.

My first idea was that if you set a property called "chunkSize" on the XHR,
it would start dispatching an event called "onchunk" whenever a chunk of
that size has been loaded. That event would contain a property "chunk" that
would be an array buffer containing that data. However, I'm having second
thoughts on that approach as it is likely to produce a lot of garbage.

Instead, my refined idea is that you'd set a "chunk" property on the XHR to
an ArrayBuffer, and each time a chunk of the size of the "chunk" was ready,
it would set the values of the "chunk" property accordingly and the
"onchunk" event would be dispatched.



[1] https://github.com/ofmlabs/aurora.js

More information about the whatwg mailing list