我是socket.io的新手。
我已经使用快速会话实现了用户登录。在req.session.user
我已经存储了用户信息,以便我以后可以访问它(它可以工作)。
现在我想在我的套接字中访问这些信息。我发现你可以使用package express-socket.io-session来访问socket.io中使用socket.handshake.session
的会话。但是当我尝试访问它时,属性socket.handshake.session.user
是未定义的。
如果有人知道这是如何工作并且可以帮助我解决这个问题会很好,因为我无法通过搜索互联网找到任何解决方案或帮助。
这个:How to share sessions with Socket.IO 1.x and Express 4.x? 例如对我不起作用。
干杯
这是我的代码:
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const expressSession = require('express-session');
const sharedsession = require("express-socket.io-session");
var app = express();
var http = require('http').createServer(app);
var io = require('socket.io').listen(http);
app.set('port', process.env.PORT || 3001);
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(expressSession({
key: 'userID',
secret: 'k39dzqlp@k5d&k@dh&',
saveUninitialized: false,
resave: false,
cookie: {maxAge: 1200000}
}));
io.use(sharedsession(expressSession({
key: 'userID',
secret: 'k39dzqlp@k5d&k@dh&',
saveUninitialized: false,
resave: false,
cookie: {maxAge: 1200000}
})));
app.route('/login')
.post((req, res) => {
//I get user from my database
req.session.user = user.dataValues;
res.redirect('home');
});
});
app.listen(app.get('port'));
io.on('connection', (socket) => {
console.log(socket.handshake.session.user); //user is undefined
});