Сами хранилища сеансов наследуются от EventEmitter:
https://github.com/senchalabs/connect/blob/master/lib/middleware/session/store.js
Хотя ни одна из реализаций не генерирует события для привязки, включая хранилище redis:
https://github.com/visionmedia/connect-redis/blob/master/lib/connect-redis.js
Вы можете довольно легко разветвлять connect-redis и взламывать эти события в себе, чтобы вы могли связываться с ними там, где вам нужно ....
RedisStore.prototype.destroy = function(sid, fn){
sid = this.prefix + sid;
this.client.del(sid, fn);
};
становится
RedisStore.prototype.destroy = function(sid, fn){
sid = this.prefix + sid;
this.client.del(sid, fn);
this.emit('destroy');
};
Тогда вы можете привязаться к событию "уничтожить" ...
var connect = require('connect')
, RedisStore = require('connect-redis')(connect);
var store = new RedisStore;
store.on('destroy', function() {
// session was destroyed
});
connect.createServer(
connect.cookieParser(),
connect.session({ store: store, secret: 'keyboard cat' })
);