>当我在隐身模式下打开两个浏览器窗口(不同的会话)时。
我得到了一个流,效果很好...新的推文如预期的那样来自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的风险。