Question

How to get user session with socket.io?

io.sockets.on('connection', function(socket) {
    // Need to get user session
});
Was it helpful?

Solution

You can attach session with socket and get in connection event. Get the user session in authorization, if you're using express then do this:

var sessionStore = new express.session.MemoryStore();
io.set('authorization', function (handshake, accept){
  var cookies = require('express/node_modules/cookie').parse(handshake.headers.cookie);
  var parsed = require('express/node_modules/connect/lib/utils').parseSignedCookies(cookies, 'SESSION_SECRET');
  sessionStore.get(parsed.sid, function (error, session){
    if (session != null && session.user != null){
    accept(null, true);
    handshake.session = session;
    }
  });
});

And in your connection event you can get it like:

socket.handshake.session
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top