broadcast([options])
options<Object>budget<number> 缓冲区大小(字节)。必须 >= 16384。 默认值:65536。backpressure<string>'strict'、'unbounded'、'drop-oldest'或'drop-newest'。默认值:'strict'。signal<AbortSignal>
- 返回:<Object>
writer<Writable>broadcast<BroadcastChannel>
创建一个推模式多消费者广播通道。单个写入器将数据推送给多个消费者。每个消费者在共享缓冲区中都有一个独立的游标。
🌐 Create a push-model multi-consumer broadcast channel. A single writer pushes data to multiple consumers. Each consumer has an independent cursor into a shared buffer.
import { broadcast, text } from 'node:stream/iter';
const { writer, broadcast: bc } = broadcast();
// Create consumers before writing
const c1 = bc.push(); // Consumer 1
const c2 = bc.push(); // Consumer 2
// Producer and consumers must run concurrently. Awaited writes
// block when the buffer fills until consumers read.
const producing = (async () => {
await writer.write('hello');
await writer.end();
})();
const [r1, r2] = await Promise.all([text(c1), text(c2)]);
console.log(r1); // 'hello'
console.log(r2); // 'hello'
await producing;const { broadcast, text } = require('node:stream/iter');
async function run() {
const { writer, broadcast: bc } = broadcast();
// Create consumers before writing
const c1 = bc.push(); // Consumer 1
const c2 = bc.push(); // Consumer 2
// Producer and consumers must run concurrently. Awaited writes
// block when the buffer fills until consumers read.
const producing = (async () => {
await writer.write('hello');
await writer.end();
})();
const [r1, r2] = await Promise.all([text(c1), text(c2)]);
console.log(r1); // 'hello'
console.log(r2); // 'hello'
await producing;
}
run().catch(console.error);