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

时间:2014-02-19 15:53:01

标签: socket.io

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

2 个答案:

答案 0 :(得分:1)

我在这里很薄,但你应该能够找到断开的原因。

这就是source正在做的事情:

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

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

答案 1 :(得分:0)

奇怪的是,这些没有记录,但你可以通过反复试验找出它们。例如,我在断开客户端时“强制关闭”,在停止服务器时“传输关闭”。但是,超时可能是别的东西。

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);
  }
});