【发布时间】:2021-02-17 00:30:38
【问题描述】:
我正在建立一个网站,您可以在其中玩纸牌游戏,我需要确保网络套接字连接来自用户。我正在使用 express-session、connect-mongo、express 和 ws 包,但无法获取会话。
升级时解析会话
server.on('upgrade', function (request, socket, head) {
console.log('Parsing session from request...');
session(request, {}, () => {
console.log('Session is parsed!');
wss.server.handleUpgrade(request, socket, head, function (ws) {
wss.server.emit('connection', ws, request);
});
});
});
快速会话
module.exports = session({
secret: "HOPEFULLY-NO-ONE-FINDS-THIS!!!!",
store: new MongoStore({ mongooseConnection: mongoose.db }),
cookie: { secure: false }
})
创建ws服务器var wss = new WebSocket.Server({ noServer: true });
保存到会话
router.post('/login', function(req, res, next) {
const { username, password } = req.body;
user.authUser(username, password, (err, user) =>{
if (err) return res.send("Error on login!");
req.session.user = user;
res.redirect("/")
});
});
在客户端,我使用简单的 new WebSocket('ws://localhost:3000');
这段代码几乎是从here 复制而来的,但它对我不起作用。当我尝试像这样记录会话时
wss.on('connection', function connection(ws, req) {
console.log(req.session);
}
我只会得到
Session {
cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: false
}
}
我几乎被困在这里。这甚至是正确的方法吗?提前致谢!
【问题讨论】:
标签: javascript node.js express session ws