【发布时间】:2013-12-01 23:55:44
【问题描述】:
假设我有一个可读流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 暂停?或者,会发生其他事情吗?
【问题讨论】: