6

对于使用 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'

4

1 回答 1

9

connect-redis是 Redis 支持的 Connect/Express 会话存储,但它与使用的“存储协议”不兼容socket.io

相反,您需要使用随附的 Redis 存储实现socket.io

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()
}));

文档

于 2013-06-19T08:52:23.687 回答