如何彻底销毁socket.io连接?

时间:2013-04-10 05:10:31

标签: node.js sockets socket.io

我正在从Socket.io和Node.js创建浏览器聊天。一切都运行顺利,但我似乎遇到了断开插座的问题。当我运行socket.disconnet();时,服务器运行socket.on("disconnect",事件,但它实际上并没有从内部侦听器中删除套接字。

当我在套接字上运行socket.disconnect();时,套接字不再接收任何新消息,但当“已断开连接”的用户发送消息时,服务器会接收并将其发送回所有客户端。我想创建一个正确的/kick命令,但是当我必须重构我的所有代码以适应简单的函数时,这很困难。

socket.connection.destroy();socket.end();socket.transport.destroy();等命令无效且未定义。有没有人有什么建议?我已经解决了这个问题好几天了,除了在套接字上设置一个shutup布尔值并告诉消息事件忽略特定的套接字之外,我还没有找到任何答案。这是最好的方法吗?如果用户开始编辑javascript代码并且我需要从客户端接收其他事件的方式会发生什么?

2 个答案:

答案 0 :(得分:0)

你可以看看套接字是否已连接。如果已连接套接字,则可以发出数据,反之亦然。 :) 希望能帮助到你..!

YourProject.sockets.on('connection',function(socket){     
  setInterval(function(){   
    if(!socket.disconnected){
      socket.emit('entrance',{message:'Hey Bro'}); 
    }      
  },10000);        
});

答案 1 :(得分:-1)

你尝试过中断线程吗?这应该以异常结束所有I / O操作。