Я разрабатываю базовое приложение для создания и прохождения тестов (с несколькими вариантами ответов и всем этим). Это React SPA с использованием веб-сокетов и react-redux
. Бэкэнд написан на Python с django-channels
. По сути, я хотел бы знать, есть ли относительно простой способ передать изменения, сделанные одним клиентом, на сервер и оттуда на другие клиенты.
Прямо сейчас я использую «синхронизацию на основе событий», когда для каждого взаимодействия клиент определяет, какие части состояния необходимо создать, удалить или обновить, и отправляет этот запрос на сервер. Сервер аутентифицирует запрос, выполняет необходимую обработку (база данных, уведомления) и отправляет результаты в виде сообщения клиентам, которые объединяют его в состояние.
Приложение в основном для настольного компьютера - задержка не проблема. Прямо сейчас взаимодействия приемлемо быстрые, но не мгновенные. Причина, по которой я не использую подходящую среду для этого (например, Qt), состоит в том, что мне понадобится слишком много времени, чтобы получить что-то хорошее, не говоря уже о том, что это должно быть сделано через привязки PyQt.
Что бы я хотел знать, есть ли относительно простой способ синхронизировать все состояние, чтобы вместо записи каждой мелочи я мог просто манипулировать состоянием на клиенте и вызывать syncEverything
. Таким образом, я мог бы очень быстро взаимодействовать и откатываться на случай, если что-то пойдет не так (некорректный запрос, проблема с аутентификацией и т. Д.), Просто запросив соответствующую часть состояния снова. Я уверен, что это обычная задача, которая была выполнена до смерти, но я не знаю принятой практики.