当管道传输到可写文件流时,Node.js请求流结束/停止

时间:2012-09-06 23:56:53

标签: node.js twitter stream pipe

我正在尝试使用现代Node.js Streams将来自Twitter的Streaming API的数据传递给一个文件。我正在使用我编写的名为TweetPipe的库,该库利用EventStreamRequest

设定:

var TweetPipe = require('tweet-pipe')
  , fs = require('fs');

var tp = new TweetPipe(myOAuthCreds);
var file = fs.createWriteStream('./tweets.json');

管道到STDOUT工作并且流保持打开状态:

tp.stream('statuses/filter', { track: ['bieber'] })
  .pipe(tp.stringify())
  .pipe(process.stdout);

管道到文件写一条推文,然后流静默地结束:

tp.stream('statuses/filter', { track: ['bieber'] })
  .pipe(tp.stringify())
  .pipe(file);

有人能告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

很难说你在这里有什么,听起来像是在你预期之前清理流。这可以通过多种方式触发,请参阅此处https://github.com/joyent/node/blob/master/lib/stream.js#L89-112

一个流可以发出'结束',然后就会停止。

虽然我怀疑这是问题,但有一件事让我感到担忧 https://github.com/peeinears/tweet-pipe/blob/master/index.js#L173-174 在发出错误之后,应该将称为

我通常会通过添加日志记录来调试这样的问题,直到我看到没有发生的事情为止。

你能发布一个可以重现的脚本吗? (对于额外的点,包括指定依赖项的package.json:)

答案 1 :(得分:0)

根据this,您应该在由tp。

创建的流上创建一个错误处理程序