README
socketio-session
A simple NPM module for session managament in socket.io using express.js (Node.js Framework). The main problem faced using socket.io is handling sessions. We may need session info for authentication and other factors. Using socketio-session , one can simply get the session info.
requirements
redis installed ( small db for storing sessionid and session info pair) ( for installing redis go for https://www.digitalocean.com/community/tutorials/how-to-install-and-use-redis )
node and socket.io ( ofcourse :P)
Setup
install socketio-session
sudo npm install socketio-session
Require socketio-session
var socketSession = require('socketio-session');
Initialize the Redis
socketSession.initializeRedis(session); // here session is the express-session using var session = require('express-session')
Set the parameters of the session by:
here we need session secret and session key, you can directly pass these params directly or create a config.js file and set the variables there and simply import the config.js file and use the params ( config.sessionSecret and config.sessionKey ).
here is the config.js file :
module.exports = {
'sessionKey' : < key >,
'sessionSecret' : '<secret>'
};
simply require the file using:
var config = require('./config');
and then:
app.use(session({
store : socketSession.getRedisStore(), // get the redisStore
secret : < sessionSecret || config.sessionSecret >,
resave : true,
saveUninitialized : true,
key : < sessionKey || config.sessionKey > // important
}));
Now you are ready to go :)
Use
socketio-session provides two functions to fetch the session object:
First one takes 3 args and a callback function
parseCookieViaArgs((sessionSecret, sessionKey, socket, function(session){
console.log(session); // and we have our session :)
});
Second one takes 2 args and a callback function
here config is the object having => { sessionSecret : '
parseCookieViaObject(config, socket, function(session){
console.log(session); // and we have our session :)
});
You can simply use them in the socket.io middleware or any other socket.io namespace
eg :
io.use(function(socket, next){
socketSession.parseCookieViaArgs((sessionSecret, sessionKey, socket, function(session){
console.log(session); // and we have our session :)
//code for authenticating the user
});
});
or
io.use(function(socket, next){
socketSession.parseCookieViaObject((configObject, socket, function(session){
console.log(session); // and we have our session :)
//code for authenticating the user
});
});
Version
0.2.0
Issues
Feel free to contribute and bug fixes
https://github.com/abhishekg785/redis-session.js
License
MIT