假设我有一个可读流sourceStream
,它每秒生成约32KB的数据。我想通过管道将这些数据传输到多个HTTP客户端的可写流。
客户端A有一个很好的互联网连接,可以跟上我的流数据。客户端B通过其可靠的14.4kbps美国Robotics调制解调器连接。
sourceStream.pipe(resClientA); // Pipe to Client A's writable stream
sourceStream.pipe(resClientB); // Pipe to Client B's writable stream
这些是TCP连接,Node.js将能够知道客户端何时落后。我知道Streams中内置了少量缓冲区,但很快缓冲区就会满,Node.js将不得不对sourceStream
生成的所有数据采取措施。
当客户端A继续按预期获取数据时,它会为客户端B无限期缓冲吗?或者,Node是否会暂停流,直到客户端B能够赶上,这意味着客户端A也会暂停此流?或者,还会发生其他事情吗?
它的速度和最慢的读取器一样慢。来源:https://github.com/isaacs/stream-multiplexer#the-问题
大多数时候,你宁愿读者的阅读速度不超过最慢的作者所能适应的速度。在Node v0.10中,它就是这样工作的。