使用不同的跟踪关键字重新启动nodejs ntwitter twitter流

时间:2012-03-03 02:44:02

标签: node.js twitter stream

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的新手。停止此操作并使用一组不同的关键字重新启动它的最佳方法是什么。

我可以销毁()流然后创建一个新流。但无论如何我可以在不断开的情况下更改曲目关键字吗?

1 个答案:

答案 0 :(得分: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);
  }
}

我希望没关系,因为这是我找到的唯一方式。