我正在使用SocketIO,如果用户按下刷新,我需要断开服务器端的套接字。我试过这样实现:
io.on('disconnect', function(socket) {
socket.close();
})
但disconnect
事件未触发。这是预期的行为,如果有的话,是否有任何方法在刷新页面时断开套接字?
答案 0 :(得分:3)
是的,正确实施后,浏览器刷新会在服务器上导致disconnect
事件。我刚用一个简单的测试应用确认了这一点。
disconnect
事件是socket
事件,而不是io
事件。因此,您需要在套接字上注册它,而不是io
级别。
这是我的事件处理程序,在我的测试服务器上工作正常:
io.on('connection', function(socket) {
socket.on('disconnect', function() {
console.log("disconnect: ", socket.id);
});
});
仅供参考,您不需要自己关闭插座。这将自动发生,因为每当刷新页面或导航页面时,所有webSocket / socket.io连接都会自动关闭。