2012-11-10 81 views
1

嗨我試圖使用動態命名空間來按需創建它們。 它的工作只是我得到重複以上的客戶由於某些原因Socket.io命名空間上的重複客戶端

服務器端:

io.of("/" + group).on("connection", function(socket_group) { 
       socket_group.groupId = group; 
       socket_group.on("infos", function(){ 
        console.log("on the group !"); 
       }) 

       socket_group.on('list', function() { 
        Urls.find({'group' : '...'}).sort({ '_id' : -1 }).limit(10).exec(function(err, data){ 
         socket_group.emit('links', data); 
        }); 
       }) 
       [...] 
       }) 

客戶端:

socket.emit('list', { ... }); 

在客戶端只需要一個命令發送但是服務器總是回覆2個或更多的迴應。每次關閉/打開我的應用程序時,響應都會增加。

謝謝,如果你發現。

回答

2

這可能是正確的行爲;就像如果您要在其他任何環境中堆棧事件處理程序一樣。爲了確保只執行一次函數的附件到命名空間,首先檢查它的存在(或者在你的程序中定義這個只在需要時運行一次的地方)。

試穿條件(!io.namespaces["/" + group])

+0

非常感謝。我正在創建一堆重複的事件處理程序 – Servernumber