检测用户活动以保持会话活动策略RxJS

问题描述

我想通过这样定义的用户活动来保持用户会话的活力。

信息系统应启动互动的锁定 在用户闲置15分钟(闲置)后的会话 定义为没有键盘或鼠标活动)。

这是我想出的..像往常一样,有很多方法可以在RxJS中完成某件事,我想知道是否有更好的方法或标准策略

下面的示例将在每60秒进行一次用户活动的情况下对服务器执行ping操作

const userActivityEvents = [
      fromEvent(document,'click'),fromEvent(document,'wheel'),'scroll'),'keypress'),'mousemove'),'touchmove'),];

    merge(...userActivityEvents).pipe(
      throttleTime(60 * 1000),switchMap(() => this.apiService.get('/api/auth/ping',new HttpParams(),new HttpHeaders({ignoreLoadingBar: ''})),),).subscribe({error: () => undefined});

解决方法

由于对此没有牵引力,所以我最好留下我的最终答案。

      this.ngZone.runOutsideAngular(() => {
        merge(
          fromEvent(document,'click'),fromEvent(document,'wheel'),'scroll'),'keypress'),'mousemove'),'touchmove'),).pipe(
          throttleTime(USER_ACTIVITY_POLL_TIME),skip(1),filter(() => !this.sessionModal),filter(() => this.authService.authenticated),switchMap(() => this.authService.ping(new HttpHeaders({ignoreLoadingBar: ''}))),).subscribe({error: () => undefined});
      });

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...