1.0.13 • Published 10 years ago

socket.io.session v1.0.13

Weekly downloads
17
License
ISC
Repository
github
Last release
10 years ago

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)
1.0.13

10 years ago

1.0.12

10 years ago

1.0.11

10 years ago

1.0.10

10 years ago

1.0.9

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.2

10 years ago

1.0.0

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago