0

最新の Node.js ストリームを使用して、Twitter のストリーミング API からファイルにデータをパイプ()しようとしています。EventStreamRequestを利用するTweetPipeと呼ばれる、私が作成したライブラリを使用しています。

設定:

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);

ファイルにパイプすると、ツイートが 1 つ書き込まれ、ストリームは静かに終了します。

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

なぜこれが起こるのか誰か教えてもらえますか?

4

2 に答える 2

0

あなたがここに持っているものから言うのは難しいです.ストリームがあなたが期待する前にクリーンアップされているように聞こえます. これはさまざまな方法でトリガーできます。こちらを参照してください https://github.com/joyent/node/blob/master/lib/stream.js#L89-112

ストリームが 'end' を発行すると、何かが停止することがあります。

これが問題だとは思いませんが、私が懸念していることの 1 つは、これ https://github.com/peeinears/tweet-pipe/blob/master/index.js#L173-174 destroy はエラーが発生した後に呼び出す必要があることです。

通常、このような問題は、正しく発生していないことがわかるまでログ ステートメントを追加してデバッグします。

実行して再現できるスクリプトを投稿できますか? (追加のポイントについては、依存関係を指定するpackage.jsonを含めてください:)

于 2012-09-20T19:55:08.433 に答える
0

thisによると、tp によって作成されたストリームにエラー ハンドラを作成する必要があります。

于 2012-09-29T21:52:22.197 に答える