我正在创建一个使用passport.js进行身份验证的简单socket.io聊天。但是每次用户注销并登录时,旧的socket连接都会重新连接。这会导致问题,因为现在有两个活动连接到同一页。所以我想在用户导航到“/logout”时结束当前连接。
var socketNotLoaded = true;
var socket;
app.get('/', function(req, res) {
if (req.isAuthenticated()) {
if(socketNotLoaded) { //is true when new connection is required
require("./socket")(io,req.user) //runs the socket.io script
socketNotLoaded = false;
}
res.render('index', pug.get(req.user));
} else {
res.render('notloggedin', pug.get());
}
})
app.get('/logout', function(req, res) {
socketNotLoaded = true;
req.logout();
res.redirect('/');
})
我正在使用以下技术:
- socket.io版本:2.0.3
- passport版本:0.4.0
- passport-local版本:1.0.0
- express版本:4.15.4
- express-session版本:1.15.5
- cookie-parser版本:1.4.3
- body-parser版本:1.17.2
if(socketNoLoaded)
调用使用模块级变量来决定是否使用req.user
初始化socket.io。这根本没有意义。当第二个用户来到您的网站时,您希望发生什么?或者第三个用户呢? - jfriend00