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は Connect/Express 用の Redis がサポートするセッション ストアですが、使用する「ストア プロトコル」と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 に答える