У меня есть последовательность выборки, где я пытаюсь сделать размер буфера одинаковым каждый раз. Я определяю размер, который хотел бы, чтобы он был и с autoAllocateChunkSize, и с highWaterMark, но ни один из них, похоже, ничего не делает. В следующем примере я ожидаю, что выходные данные console.log будут иметь то же значение, что и переменная chunkLength. Однако значение всегда отличается и очень мало по сравнению с ожидаемым размером.
var streamUrl = 'http://www.url.to/stream.ts';
var chunkLength = 3000000;
fetch(streamUrl).then((response) => {
const reader = response.body.getReader();
const stream = new ReadableStream({
autoAllocateChunkSize: chunkLength,
queueingStrategy: { highWaterMark: chunkLength },
start(controller) {
function push() {
reader.read().then(({ done, value }) => {
// Is there no more data to read?
if (done) {
controller.close();
return;
}
console.log(value);
controller.enqueue(value);
push();
});
};
push();
}
});
return new Response(stream, { headers: { "Content-Type": "application/octet-stream" } });
})