2011-02-19 180 views

回答

4

假设你的插座的名为socket,使用:

socket.disconnect() 
+0

不幸的是,这是行不通的。我试图关闭从服务器端到特定客户端的连接。 – 2011-02-19 23:45:46

+0

这不起作用 – sergiovilar 2015-03-19 03:46:03

1

Socket.io使用EventEmitter模式断开/连接/检查心跳,所以你可以做的。 Client.emit('disconnect');

16

socket.disconnect()只能在客户端使用,而不能在服务器端使用。

Client.emit('disconnect')触发服务器上的断开事件,但不会有效断开客户端。客户端不知道断开连接。

所以问题依然存在:如何强制客户端从服务器端断开?

+1

你不必调用`Client.emit(“断开”)`手动了最近socket.io版本,现在有一个服务器端`socket.disconnect()`(见我回答)。 – nh2 2012-06-16 03:12:04

+3

由于最近的更新,您的amswer现在不正确,因此-1。 – corazza 2012-08-11 18:50:36

+0

我同意,这个答案不再有效,因为现在`socket.disconnect()`也可以在服务器端使用。 – 2016-04-13 07:54:31

2

client._onDisconnect()应该工作

8

为什么你不能让服务器向客户端发出一条消息,让它调用断开连接功能?

在客户端:

socket.emit('forceDisconnect'); 

在服务器:

socket.on('forceDisconnect', function(){ 
    socket.disconnect(); 
}); 
3

对于那些谁发现这对谷歌 - 现在有这个权利的解决方案:

Socket.disconnect()踢客户端(服务器端)。客户端没有机会保持联系:)

0

我使用client.emit('disconnect') + client.removeAllListeners()用于连接客户端忽略断开

3

毕竟事件在我的情况,我想推倒在这种情况下,我有基础连接调用socket.disconnect(true),你可以看到从source here

0

我使用在客户端需要socket.disconnect();

client.emit('disconnect') didnt work for me 
-1

添加新的套接字连接ŧ一个数组,然后当你想关闭全部循环通过它们并断开连接。(服务器端)

var socketlist = []; 

    io.sockets.on('connection', function (socket) { 
     socketlist.push(socket); 
     //...other code for connection here.. 
    }); 


    //close remote sockets 
    socketlist.forEach(function(socket) {   
     socket.disconnect();      
    });  
相关问题