我正在制作一个基于Web的简单在线游戏。该游戏使用Socket.io进行网络连接。但我遇到了问题。
考虑以下情况。我运行了Socket.io服务器。一个玩家创建了房间,另一个玩家加入了房间。他们玩了一段时间的游戏...但是其中一个玩家非常生气,关闭了游戏选项卡。
在这种情况下,我如何在服务器端获取客户端已关闭浏览器的事件?
根据我的谷歌搜索,有人说:“使用像onBeforeUnload这样的浏览器关闭事件”
但我知道,并不是所有的浏览器都支持onBeforeUnload事件。因此,我想要在服务器端检查客户端断开连接事件的解决方案。
在Socket.io(nodeJS)服务器端控制台上,当客户端的连接关闭时,控制台会显示如下信息:
debug - discarding transport
我的nodeJS版本是0.4.10,Socket.io版本是0.8.7,两者都在Linux上运行。
请问有人能够提供帮助吗?
以下是简化的代码:
var io = require ( "socket.io" ).listen ( 3335 );
io.sockets.on ( "connection" , function ( socket )
{
socket.on ( "req_create_room" , function ( roomId )
{
var socketInstance = io
.of ( "/" + roomId )
.on ( "connection" , function ( sock )
{
sock.on ( "disconnect" , function ()
{
// i want this socket data always displayed...
// but first-connected-client doesn't fire this event ..
console.log ( sock );
}
});
});
});