когда отписаться от события SSE Event Source в angular (закрыть/обновить случай)

Я использую некоторый EventSource в службе в своем приложении.

Я хотел бы закрыть все соединения, когда браузер закрыт/обновлен.

Я видел это опубликовать

Прямо сейчас, это то, что я добавил в свой сервис.

  @HostListener('window:beforeunload')
  onBrowserClose() {
    this.clearAll();
  }

  clearAll() {
    if (this.eventSource) {
      this.eventSource.close();
    }
    this.callbacks = new Map<string, (e: any) => void>();
  }

Есть ли лучшее решение ?


person Crocsx    schedule 04.06.2019    source источник


Ответы (1)


вы можете использовать ngOnDestroy() для событий отмены подписки

ngOnDestroy() {
  if (this.eventSource) {
    this.eventSource.close();
  }
  this.callbacks = new Map<string, (e: any) => void>();
}

Я хотел бы закрыть все соединения, когда браузер закрыт/обновлен.

this angular life cycle method will be called when component is going to destroy
person Ganesh    schedule 04.06.2019
comment
это предположительно не работает " title="angular 2 вызывается ли ngondestroy при обновлении или просто при переходе от fr"> stackoverflow.com/questions/40468267/ , поскольку компонент не уничтожается в рабочем процессе angular, когда вы закрываете браузер или обновляете страницу - person Crocsx; 04.06.2019