0

我正在尝试使用现代 Node.js Streams 将 Twitter 的 Streaming API 中的数据通过 pipe() 传输到文件中。我正在使用我编写的名为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);

谁能告诉我为什么会这样?

4

2 回答 2

0

据此您应该在由 tp.create 创建的流上创建一个错误处理程序。

于 2012-09-29T21:52:22.197 回答
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 destroy 应该在发出错误后调用。

我通常会通过添加日志语句来调试这样的问题,直到我可以看到发生了什么不正确的事情。

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

于 2012-09-20T19:55:08.433 回答