| 1234567891011121314151617181920212223242526272829303132 |
- const { EventEmitter } = require('events')
- const { MissingSessionError } = require('./Errors')
- module.exports = function (io, sessionStore, cookieParser, cookieName) {
- const missingSessionError = new MissingSessionError()
- const sessionSockets = new EventEmitter()
- function next(error, socket, session) {
- sessionSockets.emit('connection', error, socket, session)
- }
- io.on('connection', function (socket) {
- const req = socket.handshake
- cookieParser(req, {}, function () {
- const sessionId = req.signedCookies && req.signedCookies[cookieName]
- if (!sessionId) {
- return next(missingSessionError, socket)
- }
- sessionStore.get(sessionId, function (error, session) {
- if (error) {
- return next(error, socket)
- }
- if (!session) {
- return next(missingSessionError, socket)
- }
- next(null, socket, session)
- })
- })
- })
- return sessionSockets
- }
|