私は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
削除する方法を探しています特定の実際に機能するリスナー。
この答えremoveListener は機能しないと言っています。
これを行うだけで何か欠点はありますか?
socket.removeListener=function(name){
if(socket.$events.hasOwnProperty(name)){
delete socket.$events[name];
}
};
回答を正解としてマークしましたが、私のデザインでは上記の方がうまく機能するため、コードでは上記を使用しています。
ベストアンサー1
//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でテストされています