我正在为Node.js使用Twit库,我首先在这里创建一个传入的推文流:
var stream = T.stream('statuses/filter', { locations: allLocations })
然后,使用Socket.io,我将推文发送到每个连接的客户端,并在用户断开连接时记录:
io.on('connection', function(socket){
socket.on('disconnect', function() {
console.log("User disconnected!!!!!");
});
stream.on('tweet', function(tweet) {
// sends tweet to client in question:
socket.emit('info', tweet);
});
}
问题在于,即使用户断开连接,对他们来说的推文仍然会被事件监听器解析,并记录到控制台。有没有办法去禁止"用户断开连接时所有与socket相关的事件监听器?或者是否有更简洁的方法来处理流媒体推文的这种情况?
答案 0 :(得分:1)
这是一个解决方案:
io.on('connection', function(socket){
socket.on('disconnect', function() {
console.log("User disconnected!!!!!");
stream.removeListener('tweet', onTweet);
});
function onTweet(tweet) {
// sends tweet to client in question:
socket.emit('info', tweet);
}
stream.on('tweet', onTweet);
}
此外,您可以使用单个“tweet”事件处理程序向所有套接字广播,而不是为每个连接添加新的“tweet”事件处理程序。