使用不同的跟踪关键字重新启动Node.js ntwitter Twitter流

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的新手。停止流并使用不同的关键词重新启动的最佳方法是什么?

我可以使用destroy()销毁流,然后创建新的流。但是有没有办法在不断开连接的情况下只更改跟踪关键字?

1个回答

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
您似乎没有销毁当前正在运行的流。当您启动一个新流时,如果有一个正在运行,它会关闭旧的流吗? - Mooktakim Ahmed
就像我说的那样,我仍然不知道如何调试它,所以我无法确认它。 看它的工作方式,它似乎做得很好。如果你正在追踪可口可乐和百事可乐,并使用芬达和卡斯调用TrackWords,它会停止追踪可口可乐和百事可乐。这看起来很好,但也许会浪费内存或其他东西。 - Riwels
Twitter每个用户账户只允许一个流,因此当您启动新的流而不销毁先前的流时,它将自动关闭。但最好还是自己销毁它。 - Abhidev
你能详细说明一下我如何销毁一个名为Abhidev的流吗? - FiringSquadWitness

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接