我需要使用 Node js 来处理用户与聊天应用程序的断开连接。
我不确定如何区分浏览器关闭和用户刷新浏览器之间的区别。
client.on('disconnect', function () {
console.log( 'Disconnected' );
// run mysql code to remove user from logged in table
});
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了几个小时,找不到解决方案。
这看起来很简单,我认为这是我正在使用的关键字。
有人能指出我如何处理这个问题的正确方向吗?
提前致谢。
小智 5
一种方法是生成随机 UID 并将其保存到本地存储。客户端连接后,立即将此 UID 发送到服务器并检查该 UID 是否作为已连接用户存在。在服务器端,设置断开连接超时时间,让用户在其唯一 UID 从“在线用户”数据中删除之前有 15 秒左右的时间。
客户:
// When the client starts, create the uid.
localstorage.setItem('uUID', Math.random().toString(24) + new Date());
// Emit the UID right after connection
socket.emit('userLogin', localstorage.getItem('uUID');
Run Code Online (Sandbox Code Playgroud)
服务器:
var currentUIDS = [];
var userIsConnected = true;
io.sockets.on('connection', function (socket) {
var currentUID = null;
socket.on('userLogin', function (data) {
if (data !== null) {
if (currentUIDS.includes(data)) {
userIsConnected = true;
currentUID = data;
}
}
});
socket.on('disconnect', function () {
userIsConnected = false;
setTimeout(function () {
if (!userIsConnected) currentUIDS.pop(currentUID);
}, 15000);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11346 次 |
| 最近记录: |