Connect-Redis存储不适用于socket.io
对于使用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'
connect-redis
是Connect / Express Redis支持的会话存储,但与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 )