KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
With the latest version of connect (as of 2012-07-26), I've found the following way to get a session ID from socket.io that will work with a connect-redis store. var express = require('express') , routes = require('./routes') , fs = require('fs') , http = require('http') , io = require('socket.io') , redis = require('connect-redis') , connect = require('express/node_modules/connect') , parseSignedCookie = connect.utils.parseSignedCookie , cookie = require('express/node_modules/cookie'); var secret = '...'; var rStore = new(require('connect-redis')(express)); //... var server = http.createServer(app); var sio = io.listen(server); sio.set('authorization', function(data, accept) { if(data.headers.cookie) { data.cookie = cookie.parse(data.headers.cookie); data.sessionID = parseSignedCookie(data.cookie['connect.sid'], secret); } else { return accept('No cookie transmitted', false); } accept(null, true); }); data.sessionID can then be used later such as sio.sockets.on('connection', function(socket) { console.log('New socket connection with ID: ' + socket.handshake.sessionID); rStore.get(socket.handshake.sessionID, function(err, session) { //... }); }); Having to import so many from express (connect, a utility of connect, and the cookie module) seems like an overly roundabout way of getting the functions needed to parse connect's signed cookies. Has anyone found another way?
Tags (comma-separated)
Save Edits
Cancel