会议结束时,Express 4火灾事件发生

时间:2015-06-17 21:16:10

标签: node.js express express-session

我在快递会话的会话cookie上设置了最大年龄

app.use(session({ secret: process.env.EXPRESS_SECRET, key: 'sid', cookie: {secure: false, maxAge: 3000} }));

如何使用事件发射器或express的自定义事件(内部带有事件发射器) - 在会话结束时触发事件并将数据发送到视图层?

1 个答案:

答案 0 :(得分:1)

不确定我得到了你想要达到的目标,但是如果你想检查会话是否已经结束,你可以设置一个会话数据

if (req.session.isInit !== true) {
    // The session has been reinitialized
    // do something here
    req.session.isInit = true;
}

否则,您可以轻松实现自己的会话存储,它将继承您选择的存储(默认情况下也是继承EventEmitter的快速存储器存储)并覆盖重置会话的方法#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} }));