[Help me] Cách lấy cookie trong socket.io



  • Em làm việc với ổ cắm gần 2 tháng rồi,bây giờ có 1 kế hoạch mini social network .Ở phần token login , em lấy cookie token check với trong database :
    Ở đây em dùng socket.handshake.headers.cookie nhưng nhiều khi bị lỗi rồi đổi lại thành socket.request.headers.cookie . Khi cái này lỗi thì chuyển sang cái kia nhưng cái kia vẫn bị lỗi,chuyển qua chuyển lại cuối cùng ko biết làm như nào nên hỏi các ae . Mong các đồng bào cho ý kiến !



  • Main base:

    var app = express();
    var http = http.createServer(app).listen(ADDRESS,PORT,function(){log('Run on ...')});
    ... 
      var socket = require('socket.io')(http);
      var _session = session({
                store: new MongoStore({
                    mongooseConnection: mongoose.connection,
                    ttl: 7 * 24 * 60 * 60
                }),
                secret: 'XXX',
                resave: true,
                name: 'XXXX',
                saveUninitialized: true,
                cookie: {
                    maxAge: 7 * 24 * 60 * 60 * 1000,
                },
      });
    app.use(_session);
    socket.use(function(io,next){
                _session(io.request,io.request.res,next);
            });
    app.use(passport.initialize());
    app.use(passport.session());
    

    Socket:

    socket.on('connection', function(io) {
    var session = io.request.session;
    
    if (!session.passport) {
    	io.emit('kickup'); 
    	io.disconnect(true);
    	return;
    };
    var username = session.name; // ~ 
    // 
    io.on('ready', function() {
     io.emit('greet',username);
     .... 
    });
    });
    

    client:

    var socket = io();
    socket.on('kickup',function(){
     alert('!');
     socket.disconnect();
    });
    socket.on('greet',function(name){
    alert('Hello '+name);
    })
    socket.emit('ready');
    


  • Thanks Pro !!!!


Log in to reply