socket.io 强制断开客户端

Posted

技术标签:

【中文标题】socket.io 强制断开客户端【英文标题】:socket.io force disconnect client 【发布时间】:2014-01-09 17:49:44 【问题描述】:

我可能在这里做错了,但我无法理解这一点。

以下不起作用:

客户

$("#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");
);

【问题讨论】:

您强制断开连接的原因是什么?如果你试图引导某人违反限制或安全限制,你应该不那么优雅地终止连接。 我有一个聊天应用程序,我想在其中添加一个“断开连接”选项 - 以便有人可以手动断开与 websocket 的连接(有点像在用户点击刷新时进行复制。)跨度> 【参考方案1】:

'disconnect'事件是Socket.io事件,如果你使用emit调用'disconnect',可能会导致其他问题

所以:

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

替换:

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

【讨论】:

这不会为我调用 disconnect 事件。 为我工作。谢谢!【参考方案2】:

目前,socket.emit('disconnect')socket.disconnect() 不起作用。 断开与套接字服务器的正确语法是

socket.close()

【讨论】:

以上是关于socket.io 强制断开客户端的主要内容,如果未能解决你的问题,请参考以下文章

使用 Socket.io 检测(客户端)连接断开

Socket.io - 客户端断开连接后手动重新连接

如何从客户端断开和重新连接 socket.io?

socket.io 发出数据将断开客户端

Socket.io 通过 id 断开客户端

socket.io 服务器在注册客户端断开连接时非常延迟