NodeJs内存session: Express v4.x and Socket.io 1.3.x 用(express-session)共享session

来源:互联网 发布:软件质量目标 编辑:程序博客网 时间:2024/04/29 11:06

 就能通过express v4 express-session 创建MemoryStore

废话不多说, 直接上代码:

var express = require('express'),    app = express(),    session = require('express-session'),    //cookieParser = require('cookie-parser'),    sessionStore = new session.MemoryStore(),    bodyParser = require('body-parser');var server = require('http').createServer(app);var io = require('socket.io')(server);var port = process.env.PORT || 3000;var sessionMiddleware = session({  name: 'sid',  store: sessionStore, // MemoryStore  secret: 's3cr37',  saveUninitialized: true,  resave: true,});io.use(function(socket, next) {  sessionMiddleware(socket.request, socket.request.res, next);});app.use(sessionMiddleware);app.use(bodyParser.json())server.listen(port, function() {  console.log('Server listening at port %d', port);});app.post('/login', function(req, res){    //just storing the info in session  req.session.username = req.body.user;  //...});io.on('connection', function(socket) { var name = socket.request.session.username;//原文说这样不行, 但我试过却正常使用//using socket.request.session.username which doesn't work});}

 

如果遇到socket取不到session, 可以这样试一下, 反正我这样是得到undefined的

var getUsernameFromSession = function(socket) {  var sessionId = socket.request.sessionID;  var cookie = JSON.parse(socket.request.sessionStore.sessions[sessionId]);  return cookie.username;};


0 0
原创粉丝点击