我有一个从帐户出去的功能:
exports.logout = function(req,res){
req.session.destroy( err => {
if(err)
console.log(err);
res.redirect("/login");
});
};
为了一起使用 socket.io 和express,我有一个中间件:
io.use(function(socket, next) {
sessionMiddleWare(socket.request, socket.request.res, next);
});
我有使用 socket.io 的功能。仅当用户从应用程序注销时,我才需要断开事件触发。但现在,当我刷新页面时,我的断开连接事件总是会发出:
exports.someFunction = function (io) {
io.on('connection', function(socket){
console.log(`Client connected socketId = ${socket.id}`);
console.log("session_id: " + socket.request.session.session_id);
usersMap.set(socket.request.session.session_id, socket.id);
});
socket.on('disconnect', function(){
usersMap.delete(socket.request.session.session_id);
console.log('user disconnected');
console.log("Map size: " + usersMap.size);
});
});
};
请帮忙,如何使断开连接事件仅在用户从帐户注销时触发。对不起我的英语不好。
最佳答案
您不应该使用 socket.io 的内置断开事件来实现此目的。每当用户与服务器的连接断开(当他离开您的网站或刷新网站时发生)时,就会发出该信号,这并不等同于他或她注销。
由于您有服务器端注销功能,因此您可以在其中看到有人注销。
关于node.js - 如何使断开连接事件仅在用户从帐户注销时触发(node.js + Express socket.io),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49078890/