socket.io 正在断开我的节点Twitter应用程序中所有其他连接的用户的连接



>当我在隐身模式下打开两个浏览器窗口(不同的会话)时。

我得到了一个流,效果很好...新的推文如预期的那样来自Twitter流API。问题是当另一个窗口加载页面时,第一个隐身窗口会断开连接。

这是我正在使用的代码。我不确定 Twitter 是否可能不允许同时流式传输,或者它是否符合我的逻辑。

var mod = module.exports = {}
    , twitter = require('twitter')
    , c = console;
var io
    , sock
    , intv = {};
function onNewsInit(data){
    setTimeout(function(){
        stream(streamQuery);
    }, 1000 * 5);
}
function stream(query){
    c.log('stream query', query);
    twit.stream('statuses/filter', {track:query}, function(stream) {
        stream.on('data', function (data) {
            c.log(data);
            var item = getItem(query, data);
            c.log('stream item', item);
            if ( item ) {
                sock.emit('twitter:item', { item: item });
            }
        });
        stream.on('end', function (response) {
            // Handle a disconnection
            c.log('stream end');
        });
        stream.on('destroy', function (response) {
            // Handle a 'silent' disconnection from Twitter, no end/error event fired
            c.log('stream destroy');
        });
        // Disconnect stream after five seconds
        sock.on('news:end', stream.destroy);
        sock.on('disconnect', stream.destroy);
    });
}

mod.register = function register(soc, sio) {
    c.log('news register');
    io = sio;
    sock = soc;
    sock.on('news:init', onNewsInit);
    sock.on('news:end', onNewsEnd);
};

应用.js

io.sockets.on('connection', function(sock){
    news.register(sock, io);
});

是否有任何理由一个客户端能够断开另一个客户端的连接?

事实证明,Twitter流API只允许一个同时连接。

如下所述:https://dev.twitter.com/docs/streaming-apis/streams/public

连接

每个帐户只能与公众建立一次长期连接 终结点,并使用 相同的帐户凭据将导致最早的连接 断开。

进行过多连接尝试的客户端(成功和 不成功)冒着被自动禁止其IP的风险。

最新更新