【发布时间】:2020-01-24 06:58:41
【问题描述】:
我正在开发一个 Angular 8(Electron 6 和 Ionic 4)项目,现在我们正处于评估阶段,我们正在决定是否用 SSE(服务器发送的事件)替换轮询) 或 Web 套接字。我的部分工作是研究 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();
};
});
}
我试图在这个answer 之后实现reconnectOnError() 函数,但我只是无法让它工作。然后我放弃了reconnectOnError() 函数,这似乎是一件更好的事情。不要尝试关闭并重新连接,也不要将错误传播到 observable。只需等待,当服务器再次运行时,它会自动重新连接。
问题是,这真的是最好的做法吗? 重要的是,FE 应用程序与它自己的服务器通信,而该应用程序的另一个实例无法访问该服务器(内置设备)。
【问题讨论】:
标签: javascript angular typescript electron server-sent-events