← Cloudflare Workers / workers / runtime-apis / nodejs
Streams
Node.js streams API ↗ je původní API pro práci se streamovanými daty v JavaScriptu, které vzniklo dříve než standard WHATWG ReadableStream ↗. Stream je abstraktní rozhraní pro práci se streamovanými daty v Node.js. Streamy mohou být čitelné, zapisovatelné, nebo obojí. Všechny streamy jsou instancemi EventEmitter.
Kdykoli je to možné, měli byste použít standard WHATWG "Web Streams" API ↗, což je podporováno ve Workers ↗.
import { Readable, Transform } from "node:stream";
import { text } from "node:stream/consumers";
import { pipeline } from "node:stream/promises";
// A Node.js-style Transform that converts data to uppercase
// and appends a newline to the end of the output.
class MyTransform extends Transform {
constructor() {
super({ encoding: "utf8" });
}
_transform(chunk, _, cb) {
this.push(chunk.toString().toUpperCase());
cb();
}
_flush(cb) {
this.push("\n");
cb();
}
}
export default {
async fetch() {
const chunks = [
"hello ",
"from ",
"the ",
"wonderful ",
"world ",
"of ",
"node.js ",
"streams!",
];
function nextChunk(readable) {
readable.push(chunks.shift());
if (chunks.length === 0) readable.push(null);
else queueMicrotask(() => nextChunk(readable));
}
// A Node.js-style Readable that emits chunks from the
// array...
const readable = new Readable({
encoding: "utf8",
read() {
nextChunk(readable);
},
});
const transform = new MyTransform();
await pipeline(readable, transform);
return new Response(await text(transform));
},
};Viz Dokumentace Node.js pro stream ↗ s dalšími informacemi.