Socket.io 断开事件:区分故意与超时

Socket.io 断开事件:区分故意与超时,socket.io,Socket.io,服务器端断开连接事件似乎会触发断开连接是由于超时,还是由于用户离开页面而客户端故意发送断开连接事件。有没有办法区分这两种情况呢?我在这里如履薄冰,但你应该能够找到断开连接的原因 这就是政府正在做的: socket.emit('disconnect', packet.reason || 'packet'); 因此,请检查是否存在断开连接的原因。奇怪的是,这些都没有记录在案,但您可以通过反复试验找出原因。例如,我在断开客户端连接时得到“强制关闭”,在停止服务器时得到“传输关闭”。不过,超时可能是另

服务器端断开连接事件似乎会触发断开连接是由于超时,还是由于用户离开页面而客户端故意发送断开连接事件。有没有办法区分这两种情况呢?

我在这里如履薄冰,但你应该能够找到断开连接的原因

这就是政府正在做的:

socket.emit('disconnect', packet.reason || 'packet');

因此,请检查是否存在断开连接的原因。

奇怪的是,这些都没有记录在案,但您可以通过反复试验找出原因。例如,我在断开客户端连接时得到“强制关闭”,在停止服务器时得到“传输关闭”。不过,超时可能是另外一回事

socket.on('disconnect', function(reason) {
  if (reason === 'forced close') {
    console.log('socket was disconnected by client');
  }
  if (reason === 'transport close') {
    console.log('socket was disconnected by server');
  }
  else {
    console.log('socket was disconnected for reason: ' + reason);
  }
});

socket.emit函数是服务器将数据返回给客户端时的函数,不是吗?我说的是在我的插座内。on(“disconnect”…)函数能够区分。虽然从源代码看,添加此功能似乎是一个超级简单的补丁…看起来你实际上是对的!它没有文档化,但断开连接处理程序可以采用
原因
参数。不幸的是,它没有记录它可能具有的值。。。