Я работаю над потоком Http SSE, и мне нужно поддерживать http соединение. Для этого я отправляю пустое сообщение (с именем heartbeat, все остальные называются реальными событиями) каждые 15 секунд.
source
.map(EventSource.Event::event)
.mergeWith(interval(0, 15, TimeUnit.SECONDS).map(t -> event("").withName("heartbeat")))
Недостатком этого решения является то, что я отправляю событие heartbeat, если последнее реальное событие отправляется в <15 СЕКУНД. </p>
Я хочу начать отправку событий сердцебиения после того, как последнее полученное сообщение устарело на 15 СЕКОНДОВ назад, и прекратить отправку этих событий при возврате реальных событий.
Примерно так:
--- xxx ------ x ---------- x -------- ------- ч --------------- ч --------------- ч - х ------- -------- hx ---------- x --------------- h ----
- x - реальные события
- h - события сердцебиения
- - равны 1 ВТОРОЙ
Любая помощь приветствуется:)