我的問題是,如果它有可能限制特定事件的綁定監聽器的可能性?比如我有一個聽衆:是否有可能限制socket.io每個事件只有一個偵聽器?
//In server
socket.emit('something', { message: 'Hello World!' });
//At client
socket.on('something', (data) => {
console.log(data.message);
});
//Output in console
Hello World!
但是,如果我複製該段代碼中的其他地方,我綁定2個相同的聽衆一個事件,所以我得到的,我想只有一個2個控制檯日誌。
//In server
socket.emit('something', { message: 'Hello World!' });
//At client
socket.on('something', (data) => {
console.log(data.message);
});
socket.on('something', (data) => {
console.log(data.message);
});
//Output in console
Hello World!
Hello World!
我知道有可能具有用於在單個事件不同的動作多個偵聽但是當我在一些框架socket.io使用和框架部件之間進行切換(其中I在部件的構造已經結合)每次在組件之間切換時,都會將相同的偵聽器綁定到相同的事件。所以結果如上所述。
所以我的問題是:
- 是否可以檢查是否一些事件已經有監聽器,而忽略第二個綁定?
- 或者,如果它有一些socket.io配置設置,將允許每個事件綁定一個偵聽器,並綁定一個新的,它會覆蓋舊的?
- 或者只是一些關於如何處理這種情況的良好做法?
停止監聽當您使用更改組件:socket.removeListener(「東西」,東西);更多信息:https://stackoverflow.com/questions/23092624/socket-io-removing-specific-listener –
謝謝你,我已經在angular2中編寫了一個類似於服務的接口,並將它作爲答案發布在這裏,我使用了你的介詞和socket .off函數(就我所知,它與socket.removeListener相同) – BoonZ