Le 13/09/2013 15:11, Takeshi Yoshino a écrit :
On Fri, Sep 13, 2013 at 9:50 PM, Aymeric Vitte <vitteayme...@gmail.com <mailto:vitteayme...@gmail.com>> wrote:


    Le 13/09/2013 14:23, Takeshi Yoshino a écrit :
    Do you mean that those data producer APIs should be changed to
    provide read-by-delta-data, and manipulation of data by js code
    should happen there instead of at the output of Stream?

    Yes, exactly, except if you/someone see another way of getting the
    data inside the browser and turning the flow into a stream without
    using these APIs.


I agree that there're various states and things to handle for each of the producer APIs, and it might be judicious not to convey such API specific info/signal through Stream.

I don't think it's bad to convert xhr.DONE to stream.close() manually as in your example http://lists.w3.org/Archives/Public/public-webapps/2013JulSep/0453.html.

But, regarding flow control, as I said in the other mail just posted, if we start thinking of flow control more seriously, maybe the right approach is to have unified flow control method and the point to define such a fine-grained flow control is Stream, not each API.

Maybe, I was not at the start of this thread too so I don't know exactly what was the original idea (and hope I am not screwing it up here). But I am not sure it's possible to define a universal flow control.

Example: I am currently experiencing some flow control issues for project [1], basically the sender reads a file AsArrayBuffer from indexedDB where it's stored as a Blob. Since we can not get delta data while reading the File for now, the sender waits for having the whole ArrayBuffer, then slices it, processes the blocks and sends them via WebSockets. If you implement a basic loop, of course you overload the sender's UA and connection. So the system makes some calculation in order to allow only half of the bandwidth to be used, aggregate the blocks until it finds out that the size of the aggregation meets the bandwidth requirement for the aggregated blocks to be sent every 50ms.

Then it uses a poor setTimeout to flush the data which screw up all the preceding calculations since setTimeout fires whenever it likes. Maybe there are smarter ways to do this, I was thinking to use workers so you can get a more precise clock via postMessages but I did not try.

In addition to the bandwidth control there is a window for flow control.

I take this example to understand if this could be better with a built-in Stream flow control, if so, after you have defined the right parameters (if possible) for the streams flow control, you could process delta data while reading the file and restream them directly via WebSockets, and this would be great but again not sure that a universal solution can be found.

If we're not, yes, maybe your proposal (deltaResponse) should be enough.

What is sure is that delta data should be made available instead of incremental ones.

[1] http://www.peersm.com

--
jCore
Email :  avi...@jcore.fr
Peersm : http://www.peersm.com
iAnonym : http://www.ianonym.com
node-Tor : https://www.github.com/Ayms/node-Tor
GitHub : https://www.github.com/Ayms
Web :    www.jcore.fr
Extract Widget Mobile : www.extractwidget.com
BlimpMe! : www.blimpme.com

Reply via email to