表示4火灾事件结束
我正在为会话cookie设置一个最大时间
app.use(session({ secret: process.env.EXPRESS_SECRET, key: 'sid', cookie: {secure: false, maxAge: 3000} }));
如何使用事件发射器或快速自定义事件(内部附带事件发射器) – 在会话结束时触发事件并将数据发送到视图层?
不知道我得到了你想要达到的目标,但如果你想检查会话已经结束,你可以设置一个会话数据
if (req.session.isInit !== true) { // The session has been reinitialized // do something here req.session.isInit = true; }
否则,你可以很容易地实现你自己的会话存储,它将inheritance你select的存储(默认情况下也是inheritanceEventEmitter的快速内存存储),并覆盖重置会话的方法#destroy
:
var MemoryStore = session.MemoryStore; var inherits = require('util').inherits; var MyStore = function () { MemoryStore.call(this); }; inherits(MyStore, MemoryStore); MyStore.prototype.destroy = function (sid, fn) { this.emit('resetSession'); MemoryStore.prototype.destroy.call(this, sid, fn); }; var myStore = new MyStore(); myStore.on('resetSession', function () { // do something here }); app.use(session({ store: new MyStore()secret: process.env.EXPRESS_SECRET, key: 'sid', cookie: {secure: false, maxAge: 3000} }));