我正在使用 Socket.io v0.9.16 和 Chrome 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
函数,我仍然会在调用 'test complete'
消息时看到消息 emitTest
再次。如果套接字功能有效,则应该删除监听器。
我正在寻找一种方法来删除实际有效的特定监听器。
This answer说 removeListener 不起作用。
这样做有什么缺点吗:
socket.removeListener=function(name){
if(socket.$events.hasOwnProperty(name)){
delete socket.$events[name];
}
};
我将答案标记为正确,但我在我的代码中使用了上面的答案,因为它更适合我的设计。
最佳答案
//To unsubscribe all listeners of an event
socket.off('event-name');
//to unsubscribe a certain listener
socket.off('event-name', listener);
请注意,socket.off
、socket.removeListener
、socket.removeAllListeners
、socket.removeEventListener
是同义词.
这是在 socket.io v1.4.3 上测试的
关于javascript - socket.io 删除特定的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23092624/