3

在节点服务器中,我将一系列流连接在一起。比如说:

streamA.pipe(streamB).pipe(streamC)

最终 streamA 完成,此时我想将下游切换到另一个源:

streamD.pipe(streamB).pipe(streamC)

但是当我尝试这样做时,我收到以下错误:

Error: write after end

如何防止 streamA 关闭我的下游?或者我怎样才能打开我的下游备份以将它们切换到streamD?

此外,我的用例要求我等到 streamA 结束。我不能过早地切换流。

4

2 回答 2

10

一直在谷歌上搜索同样的东西,你可以添加

streamA.pipe(streamB, {end: false}).pipe(streamC, {end: false})

于 2018-01-24T21:21:47.110 回答
2

就我而言,我发现如果我unpipe()在下游收到“结束”事件时,上游将没有机会关闭我的下游并且一切正常。

streamA.on('end', function() {
    downstreams.forEach(downstream => {
        streamA.unpipe(downstream);
    });
}

如果有更规范的解决方案,请随时发布。

于 2018-01-04T19:34:08.020 回答