SOLFIND
Web Lens
Portal home

Web Streams API | Node.js v26.8.2 Documentation

https://nodejs.org/api/webstreams.html • 281 KB fetched
Open original page


Web Streams API | Node.js v26.8.2 Documentation Skip to content Node.js * About this documentation * Usage and example * Assertion testing * Asynchronous context tracking * Async hooks * Buffer * C++ addons * C/C++ addons with Node-API * C++ embedder API * Child processes * Cluster * Command-line options * Console * Crypto * Debugger * Deprecated APIs * Diagnostics Channel * DNS * Domain * Environment Variables * Errors * Events * File system * FFI * Globals * HTTP * HTTP/2 * HTTPS * Inspector * Internationalization * Iterable Streams API * Modules: CommonJS modules * Modules: ECMAScript modules * Modules: node:module API * Modules: Packages * Modules: TypeScript * Net * OS * Path * Performance hooks * Permissions * Process * Punycode * Query strings * Readline * REPL * Report * Single executable applications * SQLite * Stream * String decoder * Test runner * Timers * TLS/SSL * Trace events * TTY * UDP/datagram * URL * Utilities * V8 * Virtual File System * VM * WASI * Web Crypto API * Web Streams API * Worker threads * Zlib * Code repository and issue tracker Node.js v26.8.2 documentation * Node.js v26.8.2 * Table of contents * Web Streams API * Overview * Example ReadableStream * Node.js streams interoperability * API * ReadableStreamTee(stream[, cloneForBranch2]) * Class: ReadableStream * new ReadableStream([underlyingSource [, strategy]]) * readableStream.locked * readableStream.cancel([reason]) * readableStream.getReader([options]) * readableStream.pipeThrough(transform[, options]) * readableStream.pipeTo(destination[, options]) * readableStream.tee() * readableStream.values([options]) * Async Iteration * Transferring with postMessage() * ReadableStream.from(iterable) * Class: ReadableStreamDefaultReader * new ReadableStreamDefaultReader(stream) * readableStreamDefaultReader.cancel([reason]) * readableStreamDefaultReader.closed * readableStreamDefaultReader.read() * readableStreamDefaultReader.releaseLock() * Class: ReadableStreamBYOBReader * new ReadableStreamBYOBReader(stream) * readableStreamBYOBReader.cancel([reason]) * readableStreamBYOBReader.closed * readableStreamBYOBReader.read(view[, options]) * readableStreamBYOBReader.releaseLock() * Class: ReadableStreamDefaultController * readableStreamDefaultController.close() * readableStreamDefaultController.desiredSize * readableStreamDefaultController.enqueue([chunk]) * readableStreamDefaultController.error([error]) * Class: ReadableByteStreamController * readableByteStreamController.byobRequest * readableByteStreamController.close() * readableByteStreamController.desiredSize * readableByteStreamController.enqueue(chunk) * readableByteStreamController.error([error]) * Class: ReadableStreamBYOBRequest * readableStreamBYOBRequest.respond(bytesWritten) * readableStreamBYOBRequest.respondWithNewView(view) * readableStreamBYOBRequest.view * Class: WritableStream * new WritableStream([underlyingSink[, strategy]]) * writableStream.abort([reason]) * writableStream.close() * writableStream.getWriter() * writableStream.locked * Transferring with postMessage() * Class: WritableStreamDefaultWriter * new WritableStreamDefaultWriter(stream) * writableStreamDefaultWriter.abort([reason]) * writableStreamDefaultWriter.close() * writableStreamDefaultWriter.closed * writableStreamDefaultWriter.desiredSize * writableStreamDefaultWriter.ready * writableStreamDefaultWriter.releaseLock() * writableStreamDefaultWriter.write([chunk]) * Class: WritableStreamDefaultController * writableStreamDefaultController.error([error]) * writableStreamDefaultController.signal * Class: TransformStream * new TransformStream([transformer[, writableStrategy[, readableStrategy]]]) * transformStream.readable * transformStream.writable * Transferring with postMessage() * Class: TransformStreamDefaultController * transformStreamDefaultController.desiredSize * transformStreamDefaultController.enqueue([chunk]) * transformStreamDefaultController.error([reason]) * transformStreamDefaultController.terminate() * Class: ByteLengthQueuingStrategy * new ByteLengthQueuingStrategy(init) * byteLengthQueuingStrategy.highWaterMark * byteLengthQueuingStrategy.size * Class: CountQueuingStrategy * new CountQueuingStrategy(init) * countQueuingStrategy.highWaterMark * countQueuingStrategy.size * Class: TextEncoderStream * new TextEncoderStream() * textEncoderStream.encoding * textEncoderStream.readable * textEncoderStream.writable * Class: TextDecoderStream * new TextDecoderStream([encoding[, options]]) * textDecoderStream.encoding * textDecoderStream.fatal * textDecoderStream.ignoreBOM * textDecoderStream.readable * textDecoderStream.writable * Class: CompressionStream * new CompressionStream(format) * compressionStream.readable * compressionStream.writable * Class: DecompressionStream * new DecompressionStream(format) * decompressionStream.readable * decompressionStream.writable * Utility Consumers * streamConsumers.arrayBuffer(stream) * streamConsumers.blob(stream) * streamConsumers.buffer(stream) * streamConsumers.bytes(stream) * streamConsumers.json(stream) * streamConsumers.text(stream) * Index * Index * About this documentation * Usage and example * Assertion testing * Asynchronous context tracking * Async hooks * Buffer * C++ addons * C/C++ addons with Node-API * C++ embedder API * Child processes * Cluster * Command-line options * Console * Crypto * Debugger * Deprecated APIs * Diagnostics Channel * DNS * Domain * Environment Variables * Errors * Events * File system * FFI * Globals * HTTP * HTTP/2 * HTTPS * Inspector * Internationalization * Iterable Streams API * Modules: CommonJS modules * Modules: ECMAScript modules * Modules: node:module API * Modules: Packages * Modules: TypeScript * Net * OS * Path * Performance hooks * Permissions * Process * Punycode * Query strings * Readline * REPL * Report * Single executable applications * SQLite * Stream * String decoder * Test runner * Timers * TLS/SSL * Trace events * TTY * UDP/datagram * URL * Utilities * V8 * Virtual File System * VM * WASI * Web Crypto API * Web Streams API * Worker threads * Zlib * Other versions * 26.x * 25.x * 24.x LTS * 23.x * 22.x LTS * 21.x * 20.x * 19.x * 18.x * 17.x * 16.x * Options * View on single page * View as JSON * Edit on GitHub Table of contents * Web Streams API * Overview * Example ReadableStream * Node.js streams interoperability * API * ReadableStreamTee(stream[, cloneForBranch2]) * Class: ReadableStream * new ReadableStream([underlyingSource [, strategy]]) * readableStream.locked * readableStream.cancel([reason]) * readableStream.getReader([options]) * readableStream.pipeThrough(transform[, options]) * readableStream.pipeTo(destination[, options]) * readableStream.tee() * readableStream.values([options]) * Async Iteration * Transferring with postMessage() * ReadableStream.from(iterable) * Class: ReadableStreamDefaultReader * new ReadableStreamDefaultReader(stream) * readableStreamDefaultReader.cancel([reason]) * readableStreamDefaultReader.closed * readableStreamDefaultReader.read() * readableStreamDefaultReader.releaseLock() * Class: ReadableStreamBYOBReader * new ReadableStreamBYOBReader(stream) * readableStreamBYOBReader.cancel([reason]) * readableStreamBYOBReader.closed * readableStreamBYOBReader.read(view[, options]) * readableStreamBYOBReader.releaseLock() * Class: ReadableStreamDefaultController * readableStreamDefaultController.close() * readableStreamDefaultController.desiredSize * readableStreamDefaultController.enqueue([chunk]) * readableStreamDefaultController.error([error]) * Class: ReadableByteStreamController * readableByteStreamController.byobRequest * readableByteStreamController.close() * readableByteStreamController.desiredSize * readableByteStreamController.enqueue(chunk) * readableByteStreamController.error([error]) * Class: ReadableStreamBYOBRequest * readableStreamBYOBRequest.respond(bytesWritten) * readableStreamBYOBRequest.respondWithNewView(view) * readableStreamBYOBRequest.view * Class: WritableStream * new WritableStream([underlyingSink[, strategy]]) * writableStream.abort([reason]) * writableStream.close() * writableStream.getWriter() * writableStream.locked * Transferring with postMessage() * Class: WritableStreamDefaultWriter * new WritableStreamDefaultWriter(stream) * writableStreamDefaultWriter.abort([reason]) * writableStreamDefaultWriter.close() * writableStreamDefaultWriter.closed * writableStreamDefaultWriter.desiredSize * writableStreamDefaultWriter.ready * writableStreamDefaultWriter.releaseLock() * writableStreamDefaultWriter.write([chunk]) * Class: WritableStreamDefaultController * writableStreamDefaultController.error([error]) * writableStreamDefaultController.signal * Class: TransformStream * new TransformStream([transformer[, writableStrategy[, readableStrategy]]]) * transformStream.readable * transformStream.writable * Transferring with postMessage() * Class: TransformStreamDefaultController * transformStreamDefaultController.desiredSize * transformStreamDefaultController.enqueue([chunk]) * transformStreamDefaultController.error([reason]) * transformStreamDefaultController.terminate() * Class: ByteLengthQueuingStrategy * new ByteLengthQueuingStrategy(init) * byteLengthQueuingStrategy.highWaterMark * byteLengthQueuingStrategy.size * Class: CountQueuingStrategy * new CountQueuingStrategy(init) * countQueuingStrategy.highWaterMark * countQueuingStrategy.size * Class: TextEncoderStream * new TextEncoderStream() * textEncoderStream.encoding * textEncoderStream.readable * textEncoderStream.writable * Class: TextDecoderStream * new TextDecoderStream([encoding[, options]]) * textDecoderStream.encoding * textDecoderStream.fatal * textDecoderStream.ignoreBOM * textDecoderStream.readable * textDecoderStream.writable * Class: CompressionStream * new CompressionStream(format) * compressionStream.readable * compressionStream.writable * Class: DecompressionStream * new DecompressionStream(format) * decompressionStream.readable * decompressionStream.writable * Utility Consumers * streamConsumers.arrayBuffer(stream) * streamConsumers.blob(stream) * streamConsumers.buffer(stream) * streamConsumers.bytes(stream) * streamConsumers.json(stream) * streamConsumers.text(stream) Web Streams API # Added in: v16.5.0 History Version Changes v21.0.0 No longer experimental. v18.0.0 Use of this API no longer emit a runtime warning. Stability: 2 - Stable An implementation of the WHATWG Streams Standard . Overview # The WHATWG Streams Standard (or "web streams") defines an API for handling streaming data. It is similar to the Node.js Streams API but emerged later and has become the "standard" API for streaming data across many JavaScript environments. There are three primary types of objects: * ReadableStream - Represents a source of streaming data. * WritableStream - Represents a destination for streaming data. * TransformStream - Represents an algorithm for transforming streaming data. Example ReadableStream # This example creates a simple ReadableStream that pushes the current performance.now() timestamp once every second forever. An async iterable is used to read the data from the stream. import { ReadableStream , } from 'node:stream/web' ; import { setInterval as every , } from 'node:timers/promises' ; import { performance , } from 'node:perf_hooks' ; const SECOND = 1000 ; const stream = new ReadableStream ( { async start ( controller ) { for await ( const _ of every (SECOND)) controller . enqueue (performance . now ()) ; }, } ) ; for await ( const value of stream) console . log (value) ; const { ReadableStream , } = require ( 'node:stream/web' ) ; const { setInterval : every , } = require ( 'node:timers/promises' ) ; const { performance , } = require ( 'node:perf_hooks' ) ; const SECOND = 1000 ; const stream = new ReadableStream ( { async start ( controller ) { for await ( const _ of every (SECOND)) controller . enqueue (performance . now ()) ; }, } ) ; ( async () => { for await ( const value of stream) console . log (value) ; } )() ; javascript copy Node.js streams interoperability # Node.js streams can be converted to web streams and vice versa via the toWeb and fromWeb methods present on stream.Readable , stream.Writable and stream.Duplex objects. For more details refer to the relevant documentation: * stream.Readable.toWeb * stream.Readable.fromWeb * stream.Writable.toWeb * stream.Writable.fromWeb * stream.Duplex.toWeb * stream.Duplex.fromWeb API # ReadableStreamTee(stream[, cloneForBranch2]) # Added in: v26.5.0 Stability: 1 - Experimental * stream   <ReadableStream> * cloneForBranch2   <boolean> When  true , chunks enqueued into the second branch are cloned from chunks enqueued into the first branch. Default: false . * Returns: <ReadableStream> [] Two <ReadableStream> branches. Runs the WHATWG ReadableStreamTee abstract operation on stream . This differs from readableStream.tee() only when cloneForBranch2 is true . The tee() method always passes false , while other web platform specifications, such as Fetch body cloning, pass true so that the second branch receives cloned chunks and consumption of one branch cannot mutate chunks seen by the other. Class: ReadableStream # Added in: v16.5.0 History Version Changes v18.0.0 This class is now exposed on the global object. new ReadableStream([underlyingSource [, strategy]]) # Added in: v16.5.0 * underlyingSource   <Object> * start   <Function> A user-defined function that is invoked immediately when the  ReadableStream is created. * controller   <ReadableStreamDefaultController> | <ReadableByteStreamController> * Returns: undefined or a promise fulfilled with undefined . * pull   <Function> A user-defined function that is called repeatedly when the  ReadableStream internal queue is not full. The operation may be sync or async. If async, the function will not be called again until the previously returned promise is fulfilled. * controller   <ReadableStreamDefaultController> | <ReadableByteStreamController> * Returns: A promise fulfilled with undefined . * cancel   <Function> A user-defined function that is called when the  ReadableStream is canceled. * reason   <any> * Returns: A promise fulfilled with undefined . * type   <string> Must be  'bytes' or undefined . * autoAllocateChunkSize   <number> Used only when  type is equal to 'bytes' . When set to a non-zero value a view buffer is automatically allocated to ReadableByteStreamController.byobRequest . When not set one must use stream's internal queues to transfer data via the default reader ReadableStreamDefaultReader . * strategy   <Object> * highWaterMark   <number> The maximum internal queue size before backpressure is applied. * size   <Function> A user-defined function used to identify the size of each chunk of data. * chunk   <any> * Returns: <number> readableStream.locked # Added in: v16.5.0 * Type: <boolean> Set to  true  if there is an active reader for this <ReadableStream> . The readableStream.locked property is false by default, and is switched to true while there is an active reader consuming the stream's data. readableStream.cancel([reason]) # Added in: v16.5.0 * reason   <any> * Returns: A promise fulfilled with undefined once cancelation has been completed. readableStream.getReader([options]) # Added in: v16.5.0 * options   <Object> * mode   <string>   'byob' or undefined * Returns: <ReadableStreamDefaultReader> | <ReadableStreamBYOBReader> import { ReadableStream } from 'node:stream/web' ; const stream = new ReadableStream () ; const reader = stream . getReader () ; console . log ( await reader . read ()) ; const { ReadableStream } = require ( 'node:stream/web' ) ; const stream = new ReadableStream () ; const reader = stream . getReader () ; reader . read () . then (console . log) ; javascript copy Causes the readableStream.locked to be true . readableStream.pipeThrough(transform[, options]) # Added in: v16.5.0 * transform   <Object> * readable   <ReadableStream> The  ReadableStream to which transform.writable will push the potentially modified data it receives from this ReadableStream . * writable   <WritableStream> The  WritableStream to which this ReadableStream 's data will be written. * options   <Object> * preventAbort   <boolean> When  true , errors in this ReadableStream will not cause transform.writable to be aborted. * preventCancel   <boolean> When  true , errors in the destination transform.writable do not cause this ReadableStream to be canceled. * preventClose   <boolean> When  true , closing this ReadableStream does not cause transform.writable to be closed. * signal   <AbortSignal> Allows the transfer of data to be canceled using an <AbortController> . * Returns: <ReadableStream> From  transform.readable . Connects this <ReadableStream> to the pair of <ReadableStream> and <WritableStream> provided in the  transform  argument such that the data from this <ReadableStream> is written in to  transform.writable , possibly transformed, then pushed to transform.readable . Once the pipeline is configured, transform.readable is returned. Causes the readableStream.locked to be true while the pipe operation is active. import { ReadableStream , TransformStream , } from 'node:stream/web' ; const stream = new ReadableStream ( { start ( controller ) { controller . enqueue ( 'a' ) ; }, } ) ; const transform = new TransformStream ( { transform ( chunk , controller ) { controller . enqueue (chunk . toUpperCase ()) ; }, } ) ; const transformedStream = stream . pipeThrough (transform) ; for await ( const chunk of transformedStream) console . log (chunk) ; // Prints: A const { ReadableStream

Links found on this page

  1. Skip to content [direct]
  2. Node.js [direct]
  3. About this documentation [direct]
  4. Usage and example [direct]
  5. Assertion testing [direct]
  6. Asynchronous context tracking [direct]
  7. Async hooks [direct]
  8. Buffer [direct]
  9. C++ addons [direct]
  10. C/C++ addons with Node-API [direct]
  11. C++ embedder API [direct]
  12. Child processes [direct]
  13. Cluster [direct]
  14. Command-line options [direct]
  15. Console [direct]
  16. Crypto [direct]
  17. Debugger [direct]
  18. Deprecated APIs [direct]
  19. Diagnostics Channel [direct]
  20. DNS [direct]
  21. Domain [direct]
  22. Environment Variables [direct]
  23. Errors [direct]
  24. Events [direct]
  25. File system [direct]
  26. FFI [direct]
  27. Globals [direct]
  28. HTTP [direct]
  29. HTTP/2 [direct]
  30. HTTPS [direct]
  31. Inspector [direct]
  32. Internationalization [direct]
  33. Iterable Streams API [direct]
  34. Modules: CommonJS modules [direct]
  35. Modules: ECMAScript modules [direct]
  36. Modules: node:module API [direct]
  37. Modules: Packages [direct]
  38. Modules: TypeScript [direct]
  39. Net [direct]
  40. OS [direct]
  41. Path [direct]
  42. Performance hooks [direct]
  43. Permissions [direct]
  44. Process [direct]
  45. Punycode [direct]
  46. Query strings [direct]
  47. Readline [direct]
  48. REPL [direct]
  49. Report [direct]
  50. Single executable applications [direct]
  51. SQLite [direct]
  52. Stream [direct]
  53. String decoder [direct]
  54. Test runner [direct]
  55. Timers [direct]
  56. TLS/SSL [direct]
  57. Trace events [direct]
  58. TTY [direct]
  59. UDP/datagram [direct]
  60. URL [direct]
  61. Utilities [direct]
  62. V8 [direct]
  63. Virtual File System [direct]
  64. VM [direct]
  65. WASI [direct]
  66. Web Crypto API [direct]
  67. Worker threads [direct]
  68. Zlib [direct]
  69. Code repository and issue tracker [direct]
  70. Index [direct]
  71. 26.x [direct]
  72. 25.x [direct]
  73. 24.x LTS [direct]
  74. 23.x [direct]
  75. 22.x LTS [direct]
  76. 21.x [direct]
  77. 20.x [direct]
  78. 19.x [direct]
  79. 18.x [direct]
  80. 17.x [direct]