Я работаю над проектом 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связывается со своим собственным сервером, к которому не может получить доступ другой экземпляр приложения (встроенное устройство).