2012-03-03 18 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

您似乎並未銷燬當前正在運行的流。 當你開始一個新的,有一個運行時,它是否關閉舊的? – 2013-01-30 16:28:03

+0

正如我所說,我仍然不知道如何調試它,所以我無法證實它。看看它是如何工作的,它看起來好像在做這項工作。如果您正在追蹤可口可樂和百事可樂,並且您使用fanta和kas致電TrackWords,它會停止追蹤可樂和百事可樂。它看起來很好,但也許是在浪費內存或其他東西。 – Riwels 2013-01-30 20:30:59

+0

twitter只允許每個用戶帳戶有一個流,所以當你開始一個新的流時不破壞前一個流......它會自動關閉。但它最好自己摧毀它。 – Abhidev 2014-08-18 03:54:12

相關問題