2013-04-22 45 views
0

在socket.io中,將使用「on」兩次替換較舊的註冊或將事件觸發兩個偵聽器?一般情況下,這與javascript「on」方法通常是一致的行爲嗎?有沒有一個原因沒有這個socket.io文件?socket.io的「on」方法是加法器還是setter?

var socket = io.connect("host:port") 
socket.on('data', function(data) { 
    console.log('listener1'); 
} 

socket.on('data', function(data) { 
    console.log('listener2'); 
} 
+2

這應該不難測試。 – Blender 2013-04-22 06:04:32

回答

1

JavaScript沒有on方法。庫只是作爲Event Emitter/Pub-Sub模式的一部分來實現,其中代碼從其他代碼「偵聽」。

而且不,它不會取代現有的註冊。他們被添加到「隊列」中。把它想象成這樣:它不僅僅是一個監聽數據的代碼。可能有數百條線路正在監聽相同的數據。

+0

感謝您對EventEmitter的評論。我忘了問,如果行爲確實是累加性的,我將如何取消註冊聽衆。我在EventEmitter文檔中找到了removeListener方法。我認爲這個方法也會在socket.io中實現。 – 2013-04-22 06:13:31

+1

@DylanP也有一個刪除過程。 jQuery有'unbind','off','undelegate'。 NodeJS有'removeListener'。他們應該有類似的實現。 – Joseph 2013-04-22 06:16:03

相關問題