0

我目前正在尝试在同一连接上同时流式传输两个轨道,我遇到的问题是为第二个流打开了一个新连接,其中 Twitter 拒绝并出现错误代码 7,这是 Twitter 放弃了最旧的连接为最新的让路,我能以编程方式做些什么来防止这种情况发生吗?

这是我正在使用的代码

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 地址的一个连接。您可以在此处找到此文档

每个帐户只能创建一个到公共端点的常设连接,并且使用相同的帐户凭据多次连接到公共流将导致最旧的连接断开。

作为替代方案,您可以使用user stream,它将传入的推文限制为经过身份验证的用户的帐户。

于 2013-06-25T17:52:57.670 回答