假设我有一个可读的流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?或者,还会发生其他事情吗?
解决方法
它和最慢的读者一样慢.资料来源:
https://github.com/isaacs/stream-multiplexer#the-problem
Most of the time,you’d prefer that the reader goes no faster than the slowest writer can accomodate. In Node v0.10,this is how it works.