假设我有一个可读的流sourceStream
,每秒生成~32KB的数据。我想将此数据传输到多个HTTP客户端的可写流。
客户端A具有出色的互联网连接,可以跟上我的流数据。客户端B通过他/她可靠的14.4kbps US 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?或者,会发生其他事情吗?
答案 0 :(得分:5)
它和最慢的读者一样慢。资料来源:https://github.com/isaacs/stream-multiplexer#the-problem
大多数时候,你更喜欢读者不会比最慢的作家容纳的速度快。在Node v0.10中,这就是它的工作原理。