【发布时间】:2014-05-30 07:59:50
【问题描述】:
我正在使用 Socket.io v0.9.16 和 铬 34
我正在尝试删除特定的侦听器,或取消订阅特定的订阅
类似这样的:
socket.on('testComplete',function(data){
console.log('test complete',data);
});
function emitTest(){
console.log('emitting test');
socket.emit('test','first emit');
}
function removeListener(){
socket.removeListener('testComplete');
}
如果我调用emitTest 函数,然后调用removeListener 函数,当我再次调用emitTest 时,我仍然会看到'test complete' 消息。监听器应该已经被移除了,如果套接字函数甚至可以工作的话。
我正在寻找一种方法来移除一个真正有效的特定监听器。
This answer 说 removeListener 不起作用。
这样做有什么缺点吗:
socket.removeListener=function(name){
if(socket.$events.hasOwnProperty(name)){
delete socket.$events[name];
}
};
我将答案标记为正确,但我在代码中使用了上述内容,因为它更适合我的设计。
【问题讨论】:
标签: javascript sockets socket.io