对于使用connect-redis的人,我有一个简单的问题。
我想将socket.io与函数io.set('store', something)
一起使用。
当我做的时候,我不知道为什么
var RedisSessionStore = require('connect-redis')(express);
var sessionStore = new RedisSessionStore();
app.use(express.session({
secret: 'some totally secret key',
cookie: {
maxAge: 1000 * 60 * 60
},
store: sessionStore
}));
//and then I wan't to use the session store for socket.io
io.set('store', sessionStore);
它说Object #<RedisStore> has no method 'subscribe'
答案 0 :(得分:9)
connect-redis
是Redis支持的Connect / Express会话存储,但它与socket.io
使用的“存储协议”不兼容。
相反,您需要使用随socket.io
附带的Redis商店实施:
var SocketIoRedisStore = require('socket.io/lib/stores/redis'),
redis = require('socket.io/node_modules/redis');
...
io.set('store', new SocketIoRedisStore({
redisPub : redis.createClient(),
redisSub : redis.createClient(),
redisClient : redis.createClient()
}));
(docs)