Redirecting this thread to the "overlap..." thread because it is the same.

For Cyril --> I think the mistake is that XHR does provide incremental data on 'loading' instead of delta data.

I have read again: http://lists.w3.org/Archives/Public/public-webapps/2013AprJun/0727.html.

And still do not get it quite well, especially the presence of eventtarget, as if for example the API was supposed to be able to predict the end of a stream.

Again, I don't think that's the job of the API, its only job is to be able to provide delta data, then the user implementation takes care of the rest.

I read again too https://dvcs.w3.org/hg/streams-api/raw-file/tip/Overview.htm. This is about the same as the File API.

Then I tried to figure out what would be the use of a Stream and came up with the following examples:

var stream=new Stream();
document.getElementById('video').src=URL.createObjectURL(stream);

var ws=new WebSocket(xxx);
ws.onmessage=function(evt) {
    stream.append(evt.data)
    //or calculate the hash of the stream using delta data
    //or encrypt the stream using delta data
    //etc
};

or

var xhr_object = new XMLHttpRequest();
xhr_object.open("GET","yyy",true);
client.responseType="stream";
xhr_object.onreadystatechange=function() {
    if (xhr_object.readyState===3) {
        stream.append(this.deltaresponse);
        //or same as above
    };
};
xhr_object.send();

or

var pc = new RTCPeerConnection(xxx);
pc.onaddstream = function(evt){
    stream.append(evt.stream);
    //or same as above
}

//Stream to ArrayBuffer
var arraybuffer;
stream.readBinary().then(function(response) {
    arraybuffer=response;
//we should be able here to read the stream per blocks of a given size so we don't have to reslice the entire result to process it
    //not sure how this can be speced with promises...
});

So unless there are some use cases that are not similar to the above examples, maybe the Streams API should just be something like:

partial interface Blob {
  Promise<ArrayBuffer> readBinary(BlobReadParams); (+block option)
  Promise<DOMString> readText(BlobReadTextParams); (+block option)
};

interface Stream : Blob {
Promise<Stream> append(ArrayBufferView or Stream or MediaStream or Blob or ...);
};

and XHR is modified to add a property returning delta data.

Regards,

Aymeric


Le 05/09/2013 14:43, Cyril Concolato a écrit :
Hi all,

Le 29/08/2013 01:25, Aymeric Vitte a écrit :
The Streams API says for now "This event handler should mimic the |FileReader.onprogress| <http://dev.w3.org/2006/webapi/FileAPI/#dfn-onprogress> event handler."...

The second proposal is not very explicit for now but there is a "read resolver".

This discussion seems to be the same as the "Overlap between StreamReader and FileReader" thread.

Now, I don't know what is the plan for the File API V2/Streams API (Promises? Schedule?) probably I am missing some details but I don't see what's the difficulty to replace the partial Blob as it is today by delta data (both for Files and Streams), the API does not have to care about non consumed data since the reader/parser/whatever_handles_the_data takes care of it (as long as delta data passed to the callback are not modified by the read, cf the example I gave for the above thread)
I fully agree with Aymeric. Can someone summarizes what's the history behind XHR that makes it hard to change (or better give an example that would break)?

I would like to see progress on the Stream API (how can I help?) because it solves one use case on which I'm working: download and aggregation of resources via XHR and in parallel use of the aggregation via a media element. This is similar to the MediaSource approach but for simpler progressive download cases. This is a bit different from the use cases I've seen on this list. The data is not consumed by JavaScript calls but by the browser directly. The JS would just use a series of StreamBuilder.append calls.

Cyril


Regards,

Aymeric


Le 27/08/2013 01:37, Kenneth Russell a écrit :
On Fri, Aug 23, 2013 at 8:35 AM, Arun Ranganathan<a...@mozilla.com> wrote:
On Aug 22, 2013, at 12:07 PM, Jonas Sicking wrote:

I think you might have misunderstood my initial comment.

I agree that the current partial data solution is not good. I think we
should remove it.

I'd really like other implementors to weigh in before we remove Partial Blob Data. Cc'ing folks who helped with it.
Eric Urhane asked me to follow up on this thread on behalf of Gregg
Tavares who unfortunately left Google.

The current spec for partial blob data is too inefficient, because it
accumulates all of the data since the beginning of the download. This
is not what's desired for streaming downloads of large data sets.
What's needed is a way to retrieve the data downloaded since the last
query. Several web developers have asked about this recently as
they're trying to stream ever larger 3D data sets into the browser.


I think we should instead create a better solution in v2 of the API
which is based on something other than FileReader and which has the
ability to deliver data on the form of "here's the data that was
loaded since last notification".
I agree that we should do a better way.
Agreed. It would be really good to finally make progress in this area.

It sounds like Microsoft's Streams API proposal at
https://dvcs.w3.org/hg/streams-api/raw-file/tip/Overview.htm or
tyoshino's Streams with Promises propsal at
http://htmlpreview.github.io/?https://github.com/tyoshino/stream/blob/master/streams.html
are two leading contenders. I personally don't care which flavor is
chosen so long as things move forward. Microsoft's proposal does seem
more fully fleshed out. (At least, it contains fewer instances of the
word "blah". :) )

-Ken

--
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



--
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