Angular 8 - обработка SSE переподключается при ошибке - PullRequest
1 голос
/ 24 сентября 2019

Я работаю над проектом Angular 8 ( с Electron 6 и Ionic 4 ), и сейчас у нас проходит этап оценки, на котором мы решаем, заменить ли опрос SSE (события, отправленные сервером)или веб-сокеты.Моя часть работы заключается в исследовании SSE.

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

Моя реализация выглядит так:

  private createSseSource(): Observable<MessageEvent> {
    return Observable.create(observer => {
      this.eventSource = new EventSource(SSE_URL);
      this.eventSource.onmessage = (event) => {
        this.zone.run(() => observer.next(event));
      };

    this.eventSource.onopen = (event) => {
      console.log('connection open');
    };

    this.eventSource.onerror = (error) => {
      console.log('looks like the best thing to do is to do nothing');
      // this.zone.run(() => observer.error(error));
      // this.closeSseConnection();
      // this.reconnectOnError();
    };
  });
}

Я пытался реализовать функцию reconnectOnError() после этого ответа , но я просто не смог заставить его работать.Затем я отказался от функции reconnectOnError(), и мне кажется, что это лучше.Не пытайтесь закрывать и повторно соединять или распространять ошибку в наблюдаемую.Просто сидите и ждите, и когда сервер снова запустится, он автоматически подключится.

Вопрос в том, действительно ли это лучше всего сделать? Важно отметить, что приложение FEсвязывается со своим собственным сервером, к которому не может получить доступ другой экземпляр приложения (встроенное устройство).

...