Sharing Express sessions with Socket.IO
Now that we have session support in place, we can share the session with Socket.IO allowing us to accept or reject the connection based on this session data. Express and Socket.IO do this using a handshake mechanism. When a client connects to the server, the handshake is initiated, which consists of executing an authorization function on Socket.IO. Here, the cookie associated with the handshake request is examined and rejected if invalid. Let's install session.socket.io
; a module that has wrapped up this process:
npm install session.socket.io --save
First off, let's change our Express server, ./lib/express/index.js
, and pass to our SocketHandler
module the sessionStore
and the cookieParser
:
var socketHandler = new SocketHandler(httpServer, sessionStore, cookieParser);
The SocketHandler
module now accepts the parameters httpServer
, sessionStore
, and cookieParser
. The SocketHandler
will now instantiate a SessionSockets
module passing socketIo
, the sessionStore...