Я использую механизм keep-alive для подключения к веб-сокету с помощью метода этот ответ :
Observable.timer(0, 5000)
.map(i => 'ping')
.concatMap(val => {
return Observable.race(
Observable.of('timeout').delay(3000),
sendMockPing()
);
})
Если истекло время ожидания, мне нужно полностью сбросить подключение к веб-сокету(поскольку это, вероятно, означает, что соединение разорвано), но иногда один тайм-аут может произойти случайно (из-за плохой реализации сервера, я полагаю?)
Моя логика подписки в настоящее время реализована следующим образом
).subscribe(result => {
if (result === 'timeout') {
// Reconnect to server
}
}
Есть ли способ (предпочтительно с использованием RxJ) отобразить наблюдаемое таким образом, чтобы я мог распознать случай, когда он испускал 'timeout'
два раза подряд?