После разрыва связи часть real-time сообщений теряется, часть приходит дважды
Экран сделок получает обновления по WebSocket. Пользователи в метро жалуются: после возврата в сеть часть операций в списке отсутствует, а часть задваивается. В логах видно разрывы соединения и последующее переподключение.
Что нужно сделать?
- Держать второе резервное соединение к тому же серверу и читать данные из того, которое сейчас живо, — так ни одно событие не потеряется и порядок сохранится
- Увеличить интервал ping/pong — тогда соединение не будет рваться в метро
- Перевести экран на опрос REST каждые две секунды: при опросе дубликатов не бывает
- Переподключаться с нарастающей задержкой, после подключения досинхронизироваться от идентификатора последнего полученного события и дедуплицировать входящие по идентификатору
