Socket.IO:检测断开连接的套接字
Socket.IO: Detect disconnected sockets
我有一个socket.io
server/client。当 client
安全断开连接时,在服务器端,行
socket.on('disconnect', function() {
});
被调用。
但是,如果客户端服务器崩溃,则永远不会调用 socket.on('disconnect')
;我知道这一点是因为我递归地打印出 wss.sockets.connected.length
并且数字没有减少。
如何检查服务器是否发生了此类崩溃?
您最终应该会收到断开连接事件,因为socket.io 有心跳机制。我认为没有其他方法可以检测客户端崩溃。不过确实需要一些时间。
Heartbeat 在这里解释得很好:
Advantage/disadvantage of using socketio heartbeats
当服务器调用disconnect()时,给断开处理程序的原因是:io server disconnect。当服务器停止时,原因是:传输关闭。
所以你可以通过添加条件来检查:
socket.on('disconnect', function(reason) {
if (reason === 'transport close'){
console.log('Server Crashed');
}
});
我有一个socket.io
server/client。当 client
安全断开连接时,在服务器端,行
socket.on('disconnect', function() {
});
被调用。
但是,如果客户端服务器崩溃,则永远不会调用 socket.on('disconnect')
;我知道这一点是因为我递归地打印出 wss.sockets.connected.length
并且数字没有减少。
如何检查服务器是否发生了此类崩溃?
您最终应该会收到断开连接事件,因为socket.io 有心跳机制。我认为没有其他方法可以检测客户端崩溃。不过确实需要一些时间。
Heartbeat 在这里解释得很好:
Advantage/disadvantage of using socketio heartbeats
当服务器调用disconnect()时,给断开处理程序的原因是:io server disconnect。当服务器停止时,原因是:传输关闭。 所以你可以通过添加条件来检查:
socket.on('disconnect', function(reason) {
if (reason === 'transport close'){
console.log('Server Crashed');
}
});