前言
在进行实时通信的过程中,socket.io 是一个非常常用的库。它可以在服务器和客户端之间建立实时的双向通信。但是,当连接关闭时,服务器端和客户端的处理方式有所不同。在本文中,我们将会详细介绍 socket.io 是如何处理服务器端连接关闭和客户端连接关闭的差异,并提供一些示例代码,以便读者更好地理解。
服务器端连接关闭
当服务器端连接关闭时,socket.io 会触发一个 disconnect
事件。在这个事件中,我们可以进行一些清理工作,例如删除用户的在线状态、清理用户的缓存等等。
示例代码:
io.on('connection', (socket) => { console.log('a user connected'); socket.on('disconnect', () => { console.log('user disconnected'); // 清理用户在线状态等 }); });
客户端连接关闭
当客户端连接关闭时,socket.io 会触发两个事件:disconnect
和 close
。其中,disconnect
事件会在客户端断开连接后立即触发,而 close
事件会在 disconnect
事件之后一段时间内触发。这是因为,当客户端关闭连接时,socket.io 会等待一段时间,以便检测是否有其他事件发生(例如重新连接)。如果在这段时间内没有任何事件发生,socket.io 就会触发 close
事件。
示例代码:
const socket = io('http://localhost:3000'); socket.on('disconnect', () => { console.log('disconnected'); }); socket.on('close', () => { console.log('closed'); });
总结
在本文中,我们介绍了 socket.io 是如何处理服务器端连接关闭和客户端连接关闭的差异。当服务器端连接关闭时,socket.io 会触发一个 disconnect
事件,我们可以在这个事件中进行一些清理工作。当客户端连接关闭时,socket.io 会触发 disconnect
和 close
两个事件,我们需要注意它们的触发顺序。希望本文能够对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65884ebdeb4cecbf2dd770c4