我正在尝试使用新的Node.js流API实现一个流,它将缓冲一定量的数据。当这个流被管道传输到另一个流中,或者如果某些东西消耗了
readable
事件,则此流应该刷新其缓冲区,然后简单地变为通行证。问题在于,这个流将被传输到许多其他流中,当每个目标流被连接时,必须刷新缓冲区,即使它已经刷新到另一个流中。即使它已经刷新到另一个流中。
例如:
BufferStream
实现了stream.Transform
,并保持一个 512KB 的内部环形缓冲区。ReadableStreamA
被连接到一个BufferStream
实例上。BufferStream
从ReadableStreamA
中读取数据,并将其写入环形缓冲区中(不会有数据丢失,因为缓冲区会覆盖旧数据)。BufferStream
被连接到WritableStreamB
上。WritableStreamB
接收整个 512KB 缓冲区,并在BufferStream
中有数据写入时继续接收数据。BufferStream
被连接到WritableStreamC
上。WritableStreamC
同样接收整个 512KB 缓冲区,但此时缓冲区已经与WritableStreamB
所接收到的不同,因为缓冲区中有更多的数据被写入了。