From 792488e47f3bbf1ef2c8a4a30fe55da770129eab Mon Sep 17 00:00:00 2001 From: mleanos Date: Sat, 15 Aug 2015 22:03:39 -0700 Subject: [PATCH] Fixed bug with Socket IO session New enhancements to the Express session, added "sessionId" as the new default session key. Previously, the express session was using the default "connect.sid" key. This caused the Socket configuration to be unable to find the session id, thus causing issues with the Socket. One suck issue, was that the same Socket would be used for all users connected to the server. This also adds a bit more error handling of the Socket server configuration. Using the `return next()` pattern. --- config/lib/socket.io.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/config/lib/socket.io.js b/config/lib/socket.io.js index aa613c267c..a7bbc7b5c0 100644 --- a/config/lib/socket.io.js +++ b/config/lib/socket.io.js @@ -71,10 +71,15 @@ module.exports = function (app, db) { // Use the 'cookie-parser' module to parse the request cookies cookieParser(config.sessionSecret)(socket.request, {}, function (err) { // Get the session id from the request cookies - var sessionId = socket.request.signedCookies['connect.sid']; + var sessionId = socket.request.signedCookies ? socket.request.signedCookies[config.sessionKey] : undefined; + + if (!sessionId) return next(new Error('sessionId was not found in socket.request'), false); // Use the mongoStorage instance to get the Express session information mongoStore.get(sessionId, function (err, session) { + if (err) return next(err, false); + if (!session) return next(new Error('session was not found for ' + sessionId), false); + // Set the Socket.io session information socket.request.session = session;