0

現在、同じ接続で同時に 2 つのトラックをストリーミングしようとしています。問題は、2 番目のストリームに対して新しい接続が開かれ、Twitter がエラー コード 7 で拒否することです。これを防ぐためにプログラムでできることはありますか?

これは私が使用しているコードです

var request = oa.get("https://stream.twitter.com/1.1/statuses/filter.json?track=tweet1", access_token, access_token_secret );

request.addListener('response', function (response) {

    response.setEncoding('utf8');

    response.addListener('data', function (chunk) {
        var theTweets = JSON.parse(chunk);
        console.log(theTweets);
        MongoClient.connect("mongodb://localhost:27017/db", function(error, database) {  
            var collection = database.collection('coll'); 
            collection.insert(theTweets, function(err, result) {});
        });    
    });

    response.addListener('end', function () {
        console.log('--- END ---');
    });

});


var requestTweet2 = oa.get("https://stream.twitter.com/1.1/statuses/filter.json?track=tweet2", access_token, access_token_secret );

requestTweet2.addListener('response', function (response) {

    response.setEncoding('utf8');

    response.addListener('data', function (chunk) {
        var theTweets = JSON.parse(chunk);

        MongoClient.connect("mongodb://localhost:27017/db", function(error, database) {  
            var collection = database.collection('coll'); 
            collection.insert(theTweets, function(err, result) {});
        });    
    });

    response.addListener('end', function () {
        console.log('--- END ---');
    });

});
requestTweet2.end();
request.end();
4

1 に答える 1

1

Twitter パブリック ストリームは、IP アドレスごとに 1 つの接続のみを受け入れます。これは、ここに文書化されています

各アカウントは、パブリック エンドポイントへの継続的な接続を 1 つだけ作成できます。同じアカウント資格情報でパブリック ストリームに複数回接続すると、最も古い接続が切断されます。

別の方法として、受信ツイートを認証済みユーザーのアカウントに制限するuser streamを使用することもできます。

于 2013-06-25T17:52:57.670 に答える