Остановить интервал по истечении времени сеанса - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть проект angular 8, который использует несколько интервалов для обновления sh данных. Эти интервалы очень малы (от 500 до 2000 мс), потому что данные нужно обновлять очень быстро.

при инициализации домашнего компонента запускается интервал проверки связи. Этот интервал проверки связи проверяет допустимый сеанс каждые две секунды:

private ping() {
    if (this.isAuthenticated()) {
      this.initIntervalsIfNecessary();
    } else {
      clearInterval(this.daxInterval);

    if(this.daxIndexSubscription) {
         this.daxIndexSubscription.unsubscribe();
      }

      if (this.daxInterval) {
        this.daxInterval = null;
      }
   }
}

Идея состоит в том, что система проверяет допустимый сеанс. Если пользователь больше не проходит надлежащую аутентификацию, этот интервал удаляется:

private initIntervalsIfNecessary() {
    if (!this.daxInterval) {
        this.daxInterval = setInterval(() => {
            this.daxIndexSubscription = this.daxIndexService
              .getCurrentDaxIndex()
              .subscribe((res: HttpResponse<DaxIndex>) => this.onSuccess(res.body), (res: HttpErrorResponse) => this.onError(res.message));
          }, 500);
     }
}

Это прекрасно работает, если пользователь выходит из системы вручную.

Однако, если время сеанса истекло, а пользователь не закрывает браузер, интервалы продолжаются. Они должным образом заблокированы на стороне сервера, но из-за того, что интервалы очень малы, мой журнал заполняется:

[2020-04-13 08:15:09] WARN 5885 --- [nio-8080-exec-3] o.z.problem.spring.common.AdviceTraits   : Unauthorized: Full authentication is required to access this resource
[2020-04-13 08:15:09] WARN 5885 --- [io-8080-exec-10] o.z.problem.spring.common.AdviceTraits   : Unauthorized: Full authentication is required to access this resource
[2020-04-13 08:15:09] WARN 5885 --- [nio-8080-exec-7] o.z.problem.spring.common.AdviceTraits   : Unauthorized: Full authentication is required to access this resource
[2020-04-13 08:15:09] WARN 5885 --- [nio-8080-exec-1] o.z.problem.spring.common.AdviceTraits   : Unauthorized: Full authentication is required to access this resource
[2020-04-13 08:15:10] WARN 5885 --- [nio-8080-exec-1] o.z.problem.spring.common.AdviceTraits   : Unauthorized: Full authentication is required to access this resource

Стек был построен с использованием jHipster, используя oAuth для аутентификации.

Итак, мой вопрос: как я могу убедиться, что могу остановить интервал, если время сеанса истекло? Спасибо за любые подсказки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...