将信息从快速会话传递到socket.io会话

时间:2018-01-19 15:52:00

标签: node.js sockets session socket.io express-session

我是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
});

0 个答案:

没有答案