- From: Martin Lasak <notifications@github.com>
- Date: Tue, 11 May 2021 08:56:00 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/issues/1126@github.com>
After some hours of reading the specs it looks like there is no way to get an indication for the point in time when the first byte of a transferred chunk was added to internal buffer of a stream reader. The use case of this is for example the measurement of throughput in bursty chunked-transfer with idle times between the HTTP chunks when using ```fetch``` api. Example from the Spec how it IS: ``` function readAllChunks(readableStream) { const reader = readableStream.getReader(); const chunks = []; return pump(); function pump() { return reader.read().then(({ value, done }) => { if (done) { return chunks; } chunks.push(value); return pump(); }); } } ``` Example how it could be (or in some other comparable way) to enable above use case: ``` function readAllChunks(readableStream) { const reader = readableStream.getReader(); const chunks = []; // --- added from here ---- const chunkStartTimes = []; const chunkEndTimes = []; const chunkBytes = []; reader.addEventListener('firstByteOfChunk', () => chunksStartTimes.push(Date.now()) ); // --- added to here ---- return pump(); function pump() { return reader.read().then(({ value, done }) => { if (done) { // --- added from here ---- // at this point throughput calculation for each chunk is possible // --- added to here ---- return chunks; } // --- added from here ---- chunksEndTimes.push(Date.now()); chunkBytes.push(value.byteLength) // --- added to here ---- chunks.push(value); return pump(); }); } } ``` Or is there some other way (preferably supported by browsers already) to achieve this desired measurement with ```fetch```? -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/streams/issues/1126
Received on Tuesday, 11 May 2021 15:56:13 UTC