官方demo是这样:
app.use(session({
store: new RedisStore(options),
secret: 'keyboard cat'
}));
其实应该要这样:
var sessionMiddleware;
var createMiddlware = _.throttle(function() {
var store = new RedisStore(redisConfig);
store.on('disconnect', function() {
createMiddlware();
});
app.set('sessionStore', store);
settings.store = store;
sessionMiddleware = session(settings);
}, 2000);
createMiddlware();
return function(req, res, next) {
sessionMiddleware.apply(this, arguments);
}
Node.js有些坑很隐蔽,一不小心就很容易掉下去~~
7 回复
我用的是connect-redis 之前也以为会重连,但是我发现并没有
self.client.on('error', function () { self.emit('disconnect'); });
看了下代码,它只是做了事件推送,并没有做任何处理。