Проблема EventSource с Angular 7

Я перешел с Angular 5 на Angular 7, так как EventSource не работает для меня в моем приложении. После поиска в Google я нашел что-то EventSourcePolyfill, поэтому я импортировал его в свой компонент.

См. ниже: эта ошибка возникает часто, я имею в виду каждую секунду.

core.js:12584 ERROR Error: No activity within 1000 milliseconds. Reconnecting.
    at eventsource.js:411
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:14134)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (zone.js:496)
    at ZoneTask.invoke (zone.js:485)
    at timer (zone.js:2054)

Мой вопрос: почему EventSource не работает в Angular 7? Есть ли другой пакет, похожий на EventSource.

Смотрите ниже мой код:

import { EventSourcePolyfill } from 'ng-event-source';

ngOnInit() {
        this.tasks();
        this.connect();
}

tasks() {
        this.handler.activateLoader();
        this.tasksService.get(this.page, this.pageSize).subscribe(results => {
            this.handler.hideLoader();
            if (this.handler.handle(results)) {
                return;
            }
            this.tasksRes = results['data'];
            for (let i = 0; i < this.tasksRes.length; i++) {
                if (this.tasksRes[i].status == 'In_progress' && this.tasksRes[i].eventType == 'Sync' &&
                    this.tasksRes[i].entityId == this.id) {
                    this.progressFlag = true;
                    break;
                } else {
                    this.progressFlag = false;
                }
            }
            this.length = results['totalElements'];
        }, error => {
            this.handler.hideLoader();
            this.handler.error(error);
        });
    }

    connect() {
        let source = new EventSourcePolyfill('/api/v1/events/register', { heartbeatTimeout: 1000, connectionTimeout: 1000 });
        source.addEventListener('message', message => {
            this.tasks();
        });
    }

Приведенный выше код дает мне ошибку следующим образом:

введите здесь описание изображения

Пожалуйста, помогите мне в этом вопросе.


person youi    schedule 16.11.2018    source источник
comment
Может ли кто-нибудь помочь мне в этом вопросе, пожалуйста?   -  person youi    schedule 19.11.2018
comment
Похоже, он не может подключиться к серверной части. Можете ли вы добавить скриншот из сети?   -  person Vova Bilyachat    schedule 22.11.2018
comment
stackoverflow .com/questions/50449599/   -  person Vova Bilyachat    schedule 22.11.2018


Ответы (1)


Рассмотрите возможность изменения декларации с

{ 
  heartbeatTimeout: 1000, 
  connectionTimeout: 1000 
}

to

{ 
  heartbeatTimeout: 1000, 
  connectionTimeout: 1000,
  errorOnTimeout: false
}

Так будет отображаться событие вместо критической ошибки

person user12001110    schedule 30.08.2019