Angular 7的EventSource问题

时间:2018-11-16 11:42:05

标签: angular typescript angular7 eventsource

从那时起我就从Angular 5迁移到了Angular 7,EventSource在我的应用程序中不起作用。谷歌搜索后,我发现了一些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();
        });
    }

上面的代码给我以下错误:

enter image description here

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

考虑从

更改声明
{ 
  heartbeatTimeout: 1000, 
  connectionTimeout: 1000 
}

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

因此将显示事件而不是严重错误