如何防止结束消息关闭 Nodejs 流?
How do I prevent end messages from closing Nodejs streams?
在节点服务器中,我将一系列流连接在一起。比如说:
streamA.pipe(streamB).pipe(streamC)
最终 streamA 完成,此时我想将下游切换到另一个来源:
streamD.pipe(streamB).pipe(streamC)
但是当我尝试这样做时,出现以下错误:
Error: write after end
如何防止 streamA 关闭我的下游?或者我怎样才能打开我的下游以将它们切换到 streamD?
此外,我的用例要求我等到 streamA 结束。我不能过早地切换流。
在我的例子中,我发现如果我在收到 'end' 事件时 unpipe()
我的下游,那么上游将没有机会关闭我的下游,一切正常。
streamA.on('end', function() {
downstreams.forEach(downstream => {
streamA.unpipe(downstream);
});
}
如果有更规范的解决方案,请随时post。
一直在谷歌搜索同样的东西,你可以添加
streamA.pipe(streamB, {end: false}).pipe(streamC, {end: false})
在节点服务器中,我将一系列流连接在一起。比如说:
streamA.pipe(streamB).pipe(streamC)
最终 streamA 完成,此时我想将下游切换到另一个来源:
streamD.pipe(streamB).pipe(streamC)
但是当我尝试这样做时,出现以下错误:
Error: write after end
如何防止 streamA 关闭我的下游?或者我怎样才能打开我的下游以将它们切换到 streamD?
此外,我的用例要求我等到 streamA 结束。我不能过早地切换流。
在我的例子中,我发现如果我在收到 'end' 事件时 unpipe()
我的下游,那么上游将没有机会关闭我的下游,一切正常。
streamA.on('end', function() {
downstreams.forEach(downstream => {
streamA.unpipe(downstream);
});
}
如果有更规范的解决方案,请随时post。
一直在谷歌搜索同样的东西,你可以添加
streamA.pipe(streamB, {end: false}).pipe(streamC, {end: false})