当前正在使用retryWhen运算符断开Websocket的连接。
在Websocket断开连接到Websocket重新连接之间,我想向用户显示通知。
因此,当连接websocket时,它将返回(示例):
{
status: 'CONNECTED'
}
,并且在连接和重新连接阶段之间的时间段内,它将返回(示例):
{
status: 'CONNECTING'
}
我的问题是,可观察到的成功和错误处理程序仅在websocket重新连接(成功)或完成重试(错误)时才运行。
本质上,我想做的是在retryWhen运算符运行时但在尝试重新连接之前从可观察的对象发出一个值。
public getSocket(): Observable<T> {
return this.socket$
.retryWhen((errors: Observable<T>) => {
return Observable.of({
status: 'CONNECTING'
})
.concat(
errors
.delay(this.TIMEOUT_INTERVAL)
.concat(
Observable.throw(errors)
)
);
})
.retry();
}
对于成功重新连接的websocket,我希望从可观察对象发出的值是:
status === 'CONNECTED'
status === 'CONNECTING'
status === 'CONNECTED
对于无法重新连接的websocket,我希望从可观察对象发出的值是:
status === 'CONNECTED'
status === 'CONNECTING'
status === 'DISCONNECTED