2013-12-20 86 views
11

我可能在這裏做錯了事,但我無法理解這一點。socket.io強制斷開客戶端

下不起作用:

客戶

$("#disconnectButton").click(function() { 
    socket.emit("disconnect"); 
}); 

服務器

socket.on("disconnect", function() { 
    console.log("this never gets called"); 
}); 

我不能手動調用從客戶端斷開事件?由於以下工作:

客戶

$("#disconnectButton").click(function() { 
    socket.emit("whatever"); 
}); 

服務器

socket.on("whatever", function() { 
    socket.disconnect(); 
    console.log("this gets called and disconnects the client"); 
}); 
+0

什麼是你迫使斷開推理?如果您嘗試啓動某個人違反限制或安全限制,則應該優雅地停用連接。 – Brad

+0

我有一個聊天應用程序,我想添加一個'disconnect'選項 - 以便有人可以手動從websocket斷開連接(有點像在用戶刷新時複製) – Tamas

回答

8

'脫節' 事件是Socket.io情況下,如果你使用發出調用 '斷開',可能導致其他問題

so:

$("#disconnectButton").click(function() { 
    socket.emit("disconnect"); 
}); 

取代:

$("#disconnectButton").click(function() { 
    socket.disconnect(); 
}); 
+1

這不會調用'disconnect '事件對我來說。 – nicohvi

+0

適合我。謝謝! – Nikola