@nnn89

Как бы вы сделали чтобы react приложение с определенным интервалом проверяло не восстановилась ли работа бэкэнда?

есть запрос на бэк -> пришла ошибка -> оповестили пользователя.
Далее хотим чтобы приложение с определенным интервалом проверяло не восстановилась ли работа бэкэнда.
Как бы вы реализовали?
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 4
Aetae
@Aetae
Тлен
Глобальный стейт в положение offline и долбёжка по healthcheck адресу, как ещё то?)
Ответ написан
@ParaBellum577
Ну если пришла ошибка, то берем и кидаем запрос на бек с любым интервалом, пока не достучимся))
Ответ написан
t1gor
@t1gor
Web developer
Мы такое делали через redux saga, у них даже пример в документации есть с таймером: https://redux-saga.js.org/docs/advanced/Channels
Ответ написан
@rPman
Бывает важно отличать, что именно произошло - проблема с интернетом, проблема с бакэндом или проблема с клиентской частью. Т.е. сначала необходимо попытаться определить именно это.
- если бакэнд вернул ошибку, значит проблема не в сети
- чтобы покрыть ряд проблем с клиентом - можно таскать в каждом запросе и ответе идентификатор версии приложений, чтобы сервер смог логировать несоответствия (например проблемы с кешированием файлов фронтэнд кода, при неправильной организации ссылок на него, т.е. без хеша в имени например)
- клиент само может сгенерировать по своей логике ошибки (если используются javascript или аналоги), главное сообщить об этом серверу (разработчики должны знать о проблемах сразу, а не ждать когда клиенты им позвонят)

По каждой причине может потребоваться соответствующая реакция. Хорошим методом является возможность повторить ошибочную операцию, а если она критична к дублированию (чтобы не создавать дубликат новых постов на форуме например), в самом сообщении добавлять уникальный идентификатор, создаваемый на действие. Не нужно пользователя просить отправить повторно в интерфейсе, это некрасиво, лучше сообщить во float окошке что возникли ошибки и идет повторная отправка, со статистикой, 'сколько попыток' и кнопка 'прекратить'. Мало того, клиент должен различать логические ошибки (например в коде была ошибка и старая версия фронтэнда пытается отправить уже неверный формат сообщения бакэнду, и он ругается на это, повторять действие не требуется, а вот предложить способы решения - да)

Проблемы с несовместимостью версий вообще классика, когда разработчику лень поддерживать на время миграции сразу две (это реально не просто бывает) но могут вылезти очень внезапно, и сообщить об этом в логах очень важно, особенно когда часто практикуется обновления на живую.

По этой причине, систему логирования ошибок с фронтэнда лучше разнести подальше от основного кода и логики бакэнда (вплоть до другого физического железа), туда же можно кидать ошибки и бакэнда
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы