socket.io 特定のリスナーを削除する 質問する

socket.io 特定のリスナーを削除する 質問する

私は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でテストされています

おすすめ記事