A abordagem ingênua para criar um ReadableStream a partir de um Uint8Array é usar o construtor ReadableStream e enfileirar todo o array como um único chunk. Para chunks maiores, isso pode ser indesejável, pois não está realmente fazendo "streaming" dos dados.
ts
const arr = new Uint8Array(64);
const stream = new ReadableStream({
start(controller) {
controller.enqueue(arr);
controller.close();
},
});Para fazer stream dos dados em chunks menores, primeiro crie uma instância Blob a partir do Uint8Array. Depois use o método Blob.stream() para criar um ReadableStream que faz stream dos dados em chunks de um tamanho especificado.
ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);
const stream = blob.stream();O tamanho do chunk pode ser definido passando um número para o método .stream().
ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);
// define tamanho de chunk de 1024 bytes
const stream = blob.stream(1024);Veja Docs > API > Dados Binários para documentação completa sobre manipulação de dados binários com Bun.