簡體   English   中英

如何使用nodejs和express向會話(redis)添加事件監聽器?

[英]how can I add an event listener to a session (redis) with nodejs and express?

我希望每當用戶的會話被銷毀/超時時運行一個函數。 在使用redis會話存儲的express中使用nodejs有辦法嗎?

會話商店本身繼承自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' })
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM