从那时起我就从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();
});
}
上面的代码给我以下错误:
请帮助我解决这个问题。
答案 0 :(得分:0)
考虑从
更改声明{
heartbeatTimeout: 1000,
connectionTimeout: 1000
}
到
{
heartbeatTimeout: 1000,
connectionTimeout: 1000,
errorOnTimeout: false
}
因此将显示事件而不是严重错误