socket-io.sessions

access express.js session from socket.io

Access Express session from socket.io.

npm install socket-io.sessions
 
  //configure passport and express 
 
  var socketIo = require("socket.io"),
    socketIoSessions = require("socket-io.sessions");
 
  var sio = socketIo.listen(webServer);
 
 
  //same attribute than the session middleware http://www.senchalabs.org/connect/middleware-session.html 
 
  sio.set("authorization", socketIoSessions({
    key:    'express.sid',       //the cookie where express (or connect) stores its session id. 
    secret: 'my session secret', //the session secret to parse the cookie 
    store:   mySessionStore      //the session store that express uses 
  }));
 
  sio.sockets.on("connection", function(socket){
    
    socket.handshake.getSession(function (errsession) {
      socket.emit('aaa!', session.someSessionProperty);
    });
 
  });
 
 
socket.handshake.getSession(function (errsession) {
  session.something = 123;
  socket.handshake.saveSession(session, function (err) {
    //whatever 
  });
});
 

Use with passport-socket.io

  var sessionOptions = {
    key:    'express.sid',      
    secret: 'my session secret',
    store:   mySessionStore     
  };
  //chain the two this way: 
  sio.set("authorization", socketIoSessions(sessionOptions, passportSocketIo.authorize(sessionOptions)));

npm install npm test

MIT - José F. Romaniello 2012.