我正在構建一個會話倒計時應用,登錄後設置爲3600。Angular 2 + ngrx:實現會話計時器
當計時器達到60時,應用程序應提醒用戶擴展會話。當計時器達到0時,應用程序應該註銷。
某些請求(POST)會重置會話計時器,其他請求不會。
我有一個auth.reducer
它處理像登錄,login_success等和auth.effect
類的情況下,我設置會話持續時間從服務器返回的實際持續時間。
我的問題是:
我在哪裏放,並開始
Observable.timer/interval
? 我有以下選擇:dashboard.component
auth.effects
auth.service
難道我創建一個動作
DECREMENT_TIMER
還是我只是創建一個動作TIMER_TIMEOUT
當可觀察結束倒計時?我應該如何格式化AuthState?我有一個
sessionSecondsLeft
計數器,每秒遞減DECREMENT_TIMER
,還是隻有一個屬性countdown_at_60
和countdown_finished
更好?
這是什麼最佳實踐?
感謝您的評論。我知道將不得不實施另一個計時器,從3600 - 60倒計時,以調用TIMER_RESET行動。我有一個問題,但。我會把那個計時器放在哪裏? auth.service或dashboard.component? –
好吧,沒有。在'TIMER_RESET'被觸發後,第一個Observable將在59分鐘後發送'TIMER_WARNING',第二個將在此後1分鐘發送'TIMER_EXPIRED'。 'Observable.concat()'訂閱傳入的Observables _in sequence_。如果先前調度另一個'TIMER_RESET',則兩個定時器將被丟棄以用於新定時器。 – j2L4e
好吧,我現在看到,我在login_success或每次POST請求後調用timer_reset。謝謝。 –