риалтайм приложение с сокетам-сервером. При открытии страницы нужно как-то загрузить initial state моей модельки данных на фронт (например, последние 20 сообщений для чата), после чего как-то обновлять этот самый стейт (например, редактировать и добавлять сообщения).
Проблема в race conditions:
- если я сначала отправлю GET на бэк, что бы получить initial state, и только после начну конектится к сокетам - могу просрать сообщение во время конекта + во время отправки ответа с бэка назад.
- если сделаю паралельно, прийдется к каждой модели тянуть last modified с миллисекундами и писать сложную систему, что бы все это абстрагировать.
- если сделаю сначала сокет, то все равно нужно смотреть на дату, так как данные могли прийти после того, как и вытянул бэк, но до того, как их получил клиент.
Собственно на предыдущем схожем проекте навелосипедил с сокет-сервера initial стейты: как только конектишься, сразу же тебе летит initial state отдельным эвентом. Получили единственный источник инфы.
Вопрос: насколько все то, что я делаю, является колхозом? Что вообще делать в таких ситуациях? Продолжать велосипедить?
Сперва сокет, а потом get . В чем проблема корректно отработать?
Обсуждают сегодня