0

我一直在用 node 和 Socket.io 开发一个在线游戏(基本上所有游戏的状态都在 Socket.io 中),但有一件事一直困扰着我。现在,用户必须关闭页面才能断开与服务器的连接。显然这需要更加优雅,我需要一个适当的“注销”按钮。

但是对于我的一生,我无法弄清楚如何制作一个。我在谷歌上搜索了答案,我已经梳理过了。我深入研究了 Socket.io 中的 Socket 对象,并尝试了以下 3 种听起来相关的方法来翻转 Socket 对象上的某些内容以断开该用户的连接:

socket.disconnected = true;
      //and
socket.manager.connected[socket.id] = false;
      //and
socket.manager.open[socket.id] = false;

但是这些都没有改变用户仍然连接的事实。这是怎么做到的?

4

1 回答 1

0

在客户端,您可能会订阅断开连接事件:

socket.on('disconnect', function() {
  console.log('disconnected');
});

在服务器端也是如此,以确保您的逻辑知道这种行为。然后为了允许用户手动断开连接,您实际上可以直接关闭连接:

socket.disconnect();

或者,如果需要与服务器进行一些额外的交互,您可以向服务器“断开连接”发送消息,然后服务器将执行自己的操作,可选地可以向客户端发出响应并调用socket.disconnect()

于 2013-07-04T09:43:22.000 回答