How can I get (Express's) sessionID for a websocket connection
express, node.js, websocket
Solution
- Parse cookie
- Get session id
Get session data
var express = require('express');
var parseCookie = express.cookieParser();
var MemoryStore = express.session.MemoryStore;
var store = new MemoryStore();
app.configure(function() {
app.use(express.session({ store: store, secret: '123456', key: 'sid' }));
});
wss.on('connection', function(ws) {
parseCookie(ws.upgradeReq, null, function(err) {
var sessionID = ws.upgradeReq.cookies['sid'];
store.get(sessionID, function(err, session) {
// session
});
});
ws.on('message', function(message) {
console.log('received: %s', message);
});
ws.send('something');
});
Problem
I'm using WebSockets `npm install ws` on the same port as Express is running. I'd like to pick up the associated 'sessionID' from the HTTP connection which had just been made and upgraded to a WebSocket. ``` // start express listening server.listen(conf.server.port, conf.server.host); var WebSocketServer = require('ws').Server , wss = new WebSocketServer({server: server}); wss.on('connection', function(ws) { var sessionID = // how do I get this? ws.on('message', function(message) { console.log('received: %s', message); }); ws.send('something'); }); ``` How can this be done? (I currently work around the issue by sending the sessionID in the page, but this is ugly.)