Javascript 如何使redis会话存储在socket.io中可用

Javascript 如何使redis会话存储在socket.io中可用,javascript,node.js,session,redis,socket.io,Javascript,Node.js,Session,Redis,Socket.io,我正在将node.js与socket.io和Redistore一起用于我的express会话。在套接字握手时,我希望读取cookie以获取会话cookie,这样我就能够读取会话并向会话写入。 以下是我到目前为止得到的信息: 在我的app.js中: var express = require('express'); var app = express(); var redis = require('redis'); var redisClient = redis.createClient(637

我正在将node.js与socket.io和Redistore一起用于我的express会话。在套接字握手时,我希望读取cookie以获取会话cookie,这样我就能够读取会话并向会话写入。 以下是我到目前为止得到的信息:

在我的app.js中:

var express = require('express');
var app = express();

var redis = require('redis');
var redisClient = redis.createClient(6379, 'localhost');

server = http.createServer(app);
server.listen(8080, function() {
  console.log('listening on *:8080');
});

var io = require('./routes/index').listen(server);
var routes = require('./routes/index').router;

app.use(session({
    secret: 'my-secret-string',
    key: 'express.sid',
    cookie: { maxAge: 2628000000 },
    store: new (require('express-sessions'))({
        storage: 'redis',
        instance: redisClient,
        host: 'localhost',
        port: 6379, 
    }),
    resave: true,
    saveUninitialized: true
}));

app.use('/', routes);

module.exports = app;
在我的index.js中:

var express = require('express');
var router = express.Router();

var socketio = require('socket.io');
var io;

router.get('/', function(req, res) {
    //do stuff here...
    res.render('index', { params: params });
}

var listen = function(app) {

    io = socketio.listen(app);

    io.sockets.on('connection', function (socket) {

        console.log(socket.handshake); // there is an handshake object with cookie information
                                       // which i can parse the express.sid (=sessionID) from

        socket.on('someEvent', function(args, callback) {
            //do stuff here 
            callback(err, msg);
        });
    });
    return io;  
}

module.exports = {
    listen: listen,
    router: router
}
现在,当客户端发出“someEvent”时,我想从会话cookie中读取会话ID并处理会话数据

我遵循了指南,但它们似乎已经过时,或者不太适合我的设置。
他到目前为止运气不好。非常感谢您的帮助!这是我的第一个node.js项目。

我在这里提供的答案显示了cookie解析和从存储中获取:此外,您需要使存储对
index.js
可见,现在它是在
app.js
中创建的,因此您无法在
io.on('connection')
回调中访问它。