【发布时间】:2022-01-12 00:44:36
【问题描述】:
我按照教程学习并能够复制/构建一个简单的实时网络应用程序。我从代码中理解了一切,除了一件事。 “断开连接”事件。为了简化,我删除了大部分代码,但它是这样的:
//server.js
io.on('connection', (socket) => {
//...I removed code from here for simplification
socket.on('disconnect', () => {
socket.broadcast.emit('user-disconnected', users[socket.id]);
delete users[socket.id];
})
})
//client.js
//...a lot of code removed from here for simplification
socket.on('user-disconnected', myname =>
{appendMessage(`${myname} left`)}
)
令我惊讶的是,这段代码有效,当用户关闭窗口或离开页面时,它会附加用户留下的消息,但它如何知道用户离开了?据我所知,“断开”这个词只是一个没有其他语义含义的字符串,对吧?我的意思是,它不像 addEventListener('click') 函数,其中 'click' 是一个内置事件,它意味着什么。据我了解,socket.io 中的事件是程序员为帮助服务器/客户端通信而“编造”的词,对吧?因此,我不明白离开页面如何在这里触发“断开连接”事件。有没有大神赐教一下?
【问题讨论】:
标签: javascript node.js socket.io chat disconnect