我一直在使用node和Socket.io的在线游戏(基本上所有游戏的状态都在Socket.io中),但有一件事一直困扰着我。现在,用户必须关闭页面才能断开与服务器的连接。显然这需要更加优雅,我需要一个合适的“注销”按钮。
但是对于我的生活,我无法弄清楚如何制作一个。我在Google上搜索了一个答案,我已经梳理了SO。我在Socket.io中挖掘了Socket对象,我尝试了这三种相关的声音方法,在Socket对象上翻转东西以断开该用户的连接:
socket.disconnected = true;
//and
socket.manager.connected[socket.id] = false;
//and
socket.manager.open[socket.id] = false;
但这些都没有改变用户仍然连接的事实。这是怎么做到的?
答案 0 :(得分:0)
在客户端,您可能会订阅断开事件:
socket.on('disconnect', function() {
console.log('disconnected');
});
在服务器端相同,以确保您的逻辑知道此类行为。 然后,为了允许用户手动断开连接,您实际上可以直接关闭连接:
socket.disconnect();
或者,如果需要与服务器进行一些额外的交互,你可以向服务器“断开连接”发出消息,那么服务器将执行自己的工作,可选择向客户端发出响应并调用socket.disconnect()
;