流背压如何与多个流监听器一起运行?

时间:2013-12-01 23:55:44

标签: node.js stream

假设我有一个可读的流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?或者,会发生其他事情吗?

1 个答案:

答案 0 :(得分:5)

它和最慢的读者一样慢。资料来源:https://github.com/isaacs/stream-multiplexer#the-problem

  

大多数时候,你更喜欢读者不会比最慢的作家容纳的速度快。在Node v0.10中,这就是它的工作原理。