I am currently trying to implement session management using express 4.x and socket io 1.4, referencing this answer. The problem is that the second argument to the express session function is the res (response) object which is returning 'undefined' in my route. Is this question outdated or am I doing something wrong?
var http = require('http');
var session = require('express-session')(
{
saveUninitialized : false,
resave:false,
secret:'secretstuff',
cookie : {
path : '/'
}
}
);
var express = require('express');
var app = express();
app.use(session)
var http_server = http.createServer(app);
var io = require('./sockets')(http_server,session);
here is my sockets.js
var Server = require('socket.io');
module.exports = function(http_server, session)
{
var io = new Server(http_server);
io.use(function(socket,next){
//socket.request.res === undefined
session(socket.request, socket.request.res,next);
})
}
which is where I get
Uncaught TypeError: argument res is required
Key Differences between WebSocket and socket.ioIt provides the Connection over TCP, while Socket.io is a library to abstract the WebSocket connections. WebSocket doesn't have fallback options, while Socket.io supports fallback. WebSocket is the technology, while Socket.io is a library for WebSockets.
sessionMiddleware()
function proposed in many sources worked fine for me:
io.use(function(socket, next) {
sessionMiddleware(socket.request, socket.request.res, next);
});
with web socket.io-client
<=> socket.io
node.js server until I added socket.io-client-cpp
application to the chain - server crashed on socket.io-client-cpp
connection with above error:
TypeError: argument res is required
in sessionMiddleware()
function. People suggest to remove socket.request.res
from the middleware completely:
and replace with {}
. However think it could be changed to slightly better variant in case somebody still need and use socket.request.res
:
io.use(function(socket, next) {
sessionMiddleware(socket.request, socket.request.res || {}, next);
});
This works fine for me!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With