Javascript 如何使redis会话存储在socket.io中可用
我正在将node.js与socket.io和Redistore一起用于我的express会话。在套接字握手时,我希望读取cookie以获取会话cookie,这样我就能够读取会话并向会话写入。 以下是我到目前为止得到的信息: 在我的app.js中: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
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')
回调中访问它。