簡體   English   中英

我怎樣才能聽到會話被破壞的事件?

[英]How can I listen to session destroyed event?

我目前正在使用Sails.JS開發一個應用程序。

我想計算在線用戶的數量,並在登錄/退出或會話到期后更新它,但我不知道如何實現會話銷毀事件之類的東西,並且無論何時會話都無法更新在線用戶的數量在沒有用戶注銷的情況下過期。

如上所述,默認會話實現中沒有此類事件,Sails會話接近ExpressJs Session,我建議您閱讀本文關於ExpressJs會話:

http://expressjs-book.com/forums/topic/express-js-sessions-a-detailed-tutorial/

然后,一個想法,以實現你想要的可能是在其中使用store和查詢。

您是否考慮過其他解決方案,例如使用socket.io (內置風帆)並在登錄時將用戶添加到頻道中,然后只是計算頻道內的用戶?

您可以像這樣包裝session.destroy()函數:

var destroyWrapper = buildDestroyWrapper(function(req){
    //do stuff after req.destroy was called
});


function buildDestroyWrapper(afterDestroy){
    return function(req){
        req.destroy();
        afterDestroy(req);
    };
}



//later, in your controller


function controllerAction(req,res,next){
    destroyWrapper(req);
}

此方法允許您以不同方式處理銷毀,具體取決於您傳遞給buildDestroyWrapper的回調。 例如:

var logAfterDestroy = buildDestroyWrapper(function(req){
    console.log("session destroyed");
});
var killAfterDestroy = buildDestroyWrapper(function(req){   
    process.kill();
});


function buildDestroyWrapper(afterDestroy){
    return function(req){
        req.destroy();
        afterDestroy(req);
    };
}



//later, in your controller
function logoutAction(req,res,next){
    logAfterDestroy(req);
}
function killAppAction(req,res,next){
    killAfterDestroy(req);
}

暫無
暫無

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

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