Angular 2 + ngrx:实现会话定时器
Angular 2 + ngrx: Implement session timer
我正在构建一个带有会话倒计时的应用程序,它在登录后设置为 3600。
当计时器达到 60 时,应用程序应提醒用户延长会话。当计时器达到 0 时,应用程序应注销。
有些请求 (POST) 会重置会话计时器,有些则不会。
我有一个 auth.reducer
可以处理登录、login_success 等情况,还有一个 auth.effect
class,我将会话持续时间设置为返回的实际持续时间来自服务器。
我的问题是:
我应该在哪里启动 Observable.timer/interval
?
我有以下选择:
dashboard.component
auth.effects
auth.service
当 Observable 完成倒计时时,我是创建一个动作 DECREMENT_TIMER
还是只创建一个动作 TIMER_TIMEOUT
?
我应该如何格式化 AuthState?我有一个每秒递减 DECREMENT_TIMER
的 sessionSecondsLeft
计数器,还是只有 属性 countdown_at_60
和 countdown_finished
更好?
最佳做法是什么?
DECREMENT_TIMER
操作会每秒更新一次您的状态,并且还会向您的操作日志发送垃圾邮件(如果您使用的是 store-devtools)
我的建议:
创建一个动作TIMER_RESET
。如果你想显示它,你可以在商店中保存一个时间戳,但我认为你需要它直到还剩不到一分钟。
@Effect() TIMER_RESET$ = this.actions$
.ofType(TIMER_RESET)
.switchMap(
Observable.concat(
Observable.timer(1000*60*59).map({type: TIMER_WARNING}),
Observable.timer(1000*60*1).map({type: TIMER_EXPIRED})
)
)
我正在构建一个带有会话倒计时的应用程序,它在登录后设置为 3600。
当计时器达到 60 时,应用程序应提醒用户延长会话。当计时器达到 0 时,应用程序应注销。
有些请求 (POST) 会重置会话计时器,有些则不会。
我有一个 auth.reducer
可以处理登录、login_success 等情况,还有一个 auth.effect
class,我将会话持续时间设置为返回的实际持续时间来自服务器。
我的问题是:
我应该在哪里启动
Observable.timer/interval
? 我有以下选择:dashboard.component
auth.effects
auth.service
当 Observable 完成倒计时时,我是创建一个动作
DECREMENT_TIMER
还是只创建一个动作TIMER_TIMEOUT
?我应该如何格式化 AuthState?我有一个每秒递减
DECREMENT_TIMER
的sessionSecondsLeft
计数器,还是只有 属性countdown_at_60
和countdown_finished
更好?
最佳做法是什么?
DECREMENT_TIMER
操作会每秒更新一次您的状态,并且还会向您的操作日志发送垃圾邮件(如果您使用的是 store-devtools)
我的建议:
创建一个动作TIMER_RESET
。如果你想显示它,你可以在商店中保存一个时间戳,但我认为你需要它直到还剩不到一分钟。
@Effect() TIMER_RESET$ = this.actions$
.ofType(TIMER_RESET)
.switchMap(
Observable.concat(
Observable.timer(1000*60*59).map({type: TIMER_WARNING}),
Observable.timer(1000*60*1).map({type: TIMER_EXPIRED})
)
)