Skip to content

Наивный подход к созданию ReadableStream из Buffer — использовать конструктор ReadableStream и поставить в очередь весь массив как один чанк. Для большого буфера это может быть нежелательно, так как этот подход не «потоковый» — данные не передаются меньшими частями.

ts
const buf = Buffer.from("hello world");
const stream = new ReadableStream({
  start(controller) {
    controller.enqueue(buf);
    controller.close();
  },
});

Для потоковой передачи данных меньшими частями сначала создайте экземпляр Blob из Buffer. Затем используйте метод Blob.stream() для создания ReadableStream, который потоково передаёт данные частями указанного размера.

ts
const buf = Buffer.from("hello world");
const blob = new Blob([buf]);
const stream = blob.stream();

Размер чанка можно установить, передав число в метод .stream().

ts
const buf = Buffer.from("hello world");
const blob = new Blob([buf]);

// установить размер чанка 1024 байта
const stream = blob.stream(1024);

Смотрите Документация > API > Двоичные данные для полной документации по работе с двоичными данными в Bun.

Bun от www.bunjs.com.cn