Discovering the importance of streams
In an event-based platform such as Node.js, the most efficient way to handle I/O is in real time, consuming the input as soon as it is available and sending the output as soon as it is produced by the application.
In this section, we are going to give an initial introduction to Node.js streams and their strengths. Please bear in mind that this is only an overview, as a more detailed analysis on how to use and compose streams will follow later in the chapter.
Buffering vs Streaming
Almost all the asynchronous APIs that we've seen so far in the book work using the buffer mode. For an input operation, the buffer mode causes all the data coming from a resource to be collected into a buffer; it is then passed to a callback as soon as the entire resource is read. The following diagram shows a visual example of this paradigm:
In the preceding figure, we can see that, at the time t1
, some data was received from the resource and saved into the buffer. At the time...