Перезапуск nodejs ntwitter Twitter-потока с другими ключевыми словами трека - PullRequest
3 голосов
/ 03 марта 2012
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 голосов
/ 29 января 2013

Я довольно нуб, так что, возможно, этот путь не очень хороший и тратит ресурсы, но я все еще не знаю, как это проверить, поэтому я опущу это здесь и надеюсь, что кто-то опытный сказал нам, если это Хорошо или это неправильно, и самое главное, почему?

Способ заключается в том, чтобы поместить вызов 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);
  }
}

Я надеюсь, что все в порядке, потому что это единственный способ, который я нашел.

...