【问题标题】:How can I keep node application running while stream is open?如何在流打开时保持节点应用程序运行?
【发布时间】:2013-10-28 04:35:45
【问题描述】:

我想知道一个好的解决方案是保持 Node 应用程序运行直到可读流关闭。所以在一个简单的例子中:

var tcpVideoStream = new TcpVideoStream(options);
var writeStream = fs.createWriteStream(options.fileName);
tcpVideoStream.pipe(writeStream);

如何保持我的应用程序运行,以便它继续将流数据写入文件,直到可读流(在这种情况下为 tcpVideoStream)关闭?即发出“结束”或“关闭”。

谢谢!

【问题讨论】:

  • 将布尔值设置为 false,当可读流结束时将其设置为 true。每当您尝试写入数据时,请确保布尔值仍为 false 以确保可读流仍处于打开状态。

标签: javascript node.js stream


【解决方案1】:

在数据完全通过管道传输之前,您的应用程序不会关闭。只有当可读流仍然存在时,您的应用程序才会关闭,例如没有data 事件侦听器,或者您没有在其上调用resume()(如果它已经暂停)。使用pipe() 就像添加一个data 监听器。

例如,这将退出且没有输出。

var fs = require('fs');

var read = fs.createReadStream('./src');
var write = fs.createWriteStream('./dest');
read.pause();

read.on('data', function(chunk) {
  console.log(chunk);
});

【讨论】:

    【解决方案2】:

    您可能想查看此页面。 {for WriteStreams}

    http://nodejs.org/docs/v0.6.18/api/stream.html#stream_stream_pipe_destination_options

    基本上使用 {end: false} 保持写入流打开,以便您可以调度另一个结束事件。

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 2016-01-04
      相关资源
      最近更新 更多