2012-03-03 6 views
3
var twitter = require('ntwitter'); 
// Configure twitter 

var keywords = ['hello', 'world']; 

twit.stream('statuses/filter', {'track':keywords.join(',')}, function(stream) { 
    stream.on('data', function (data) { 
    console.log(data); 
    }); 

    stream.on('end', function (response) { 
    console.log("\n===================================================="); 
    console.log("DESTROYING"); 
    console.log("====================================================\n"); 
    }); 

    setTimeout(function(){ 
    stream.destroy(); 
    }, 60000); 
}); 

私はnodejsを初めて使っています。これをやめてもう一度やりますが、別のキーワードのセットを使用するのが最善の方法です。nodejsを再起動するntwitter異なるトラックキーワードを使用したtwitterストリーム

ストリームを破棄()してから新しいストリームを作成できます。しかし、とにかく私はトラックのキーワードを切断せずに変更することができますか?

答えて

0

私はかなりノブなので、それは良い方法ではなく、リソースを浪費していますが、まだチェックする方法がわからないので、ここでドロップして、熟練した人に教えてくださいそれは大丈夫か間違っている、そして最も重要なのはなぜ?

方法はtw.stream呼び出しを関数内に置き、その関数を追跡したい単語の配列で呼び出すことです。これは、新しい単語の追跡を開始し、取り出した単語の追跡を停止します:

// Array to store the tracked words 
var TwitWords = []; 

// Tracker function 
function TrackWords(array){ 
    tw.stream('statuses/filter',{track:array},function(stream){ 
    stream.on('data',function(data){ 
     console.log(data.text); 
    }); 
    }); 
} 

// Add word 
function AddTwitWord(word){ 
    if(TwitWords.indexOf(word)==-1){ 
    TwitWords.push(word); 
    TrackWords(TwitWords); 
    } 
} 

// Remove word 
function RemoveTwitWord(word){ 
    if(TwitWords.indexOf(word)!=-1){ 
    TwitWords.splice(TwitWords.indexOf(word),1); 
    TrackWords(TwitWords); 
    } 
} 

私はそれは私が見つけた唯一の方法だから、それは、大丈夫です願っています。

+1

現在実行中のストリームを破壊しているようではありません。 新しいものを起動すると、実行中に古いものを閉じますか? –

+0

私が言ったように、私はまだそれをデバッグする方法を知らないので、私はそれを確認することはできません。 どのように動作しているか見ると、うまく動作しているようです。あなたがコークスとペプシを追跡していて、ファンタとカスでTrackWordsを呼び出すと、それはコークスとペプシの追跡を停止します。それはうまく見えますが、多分それは記憶や何かを無駄にしています。 – Riwels

+0

twitterはユーザーアカウントごとに1つのストリームしか許可しないので、新しいストリームを破棄せずに新しいストリームを開始すると、自動的に終了します。しかし、それはあなた自身でそれを破壊するのがまだ良い。 – Abhidev

関連する問題