socket.io.session

1.0.13 • Public • Published

socket.io.session

get/set the same session content with the middleware 'express-session'.


Install

    npm install socket.io.session

Config

    var session         = require('express-session');
    var RedisStore      = require('connect-redis')(session);
    var redis           = require('redis');
    var socketIOSession = require("socket.io.session");
    
    var redisClient     = redis.createClient();
    
    var sessionStore = new RedisStore({
      "client": redisClient,
      "host": "127.0.0.1",
      "port": 6379
    });
    
    
    //if you dont wanna use redis as session store
    //you can just use "session.MemoryStore"
    //memoryStore is binded with express-session as a fallback storage
    
    var sessionSettings = {
      "store": sessionStore, // or session.MemoryStore
      "secret": "your secret",
      "cookie": { "path": '/', "httpOnly": true, "secure": false,  "maxAge": null }
    };
    
    //used for http session
    app.use(session(sessionSettings));
    
    var server = require('http').Server(app);
    var io = require('socket.io')(server);
    
    
    //"sessionSettings" same config as http-session used 
    var socketSession = socketIOSession(sessionSettings); 
    
    //so it's better to make them global avaliable
    global.io            = io
    global.socketSession = socketSession
    
    //parse the "/" namespace
    io.use(socketSession.parser);
    
    // define a new namespace
    var chat = io
      .of("/chat")
      .on("connection",function(socket){
        console.log(socket.session);//same as http request.session
        
        //change session content
        socket.session.login = true
        
        //save the changed session ,at the same time http req.session changed too
        socketSession.save(socket)
        
        //or you can destory session that is attached on the specific  socket 
        socketSession.destroy(socket)
        
        //same as "destroy"
        socketSession.clear(socket);
        
      });
    
    //parse "/chat" namespace, must use parser for each namespace
    chat.use(socketSession.parser);
    
    
    app.use('/', someRoutes);
    server.listen(8080, function() {
      console.log('Express server listening on port ' +   server. address().port);
      console.log('http://localhost:' + server.address().port);
    });

Note:

  1. it's based on express-session
  2. socket.session == req.session, change one of them, the other one change too
  3. Email is the best way to let me know about the tool's issue(bjwch2008@gmail.com)

Package Sidebar

Install

npm i socket.io.session

Weekly Downloads

0

Version

1.0.13

License

ISC

Last publish

Collaborators

  • chao.wang