В прошлом мне приходилось сталкиваться с подобной проблемой (синхронизация автономных событий).Вот что мы сделали в общем, надеюсь, это поможет.
- Приложение не запускает синхронизацию
Вы хотите свести к минимуму сроки, гдемогут возникнуть проблемы с синхронизацией.
Эту проблему можно решить, вызвав синхронизацию, наблюдая за состоянием navigator.online .1. когда он изменится на false, начните буферизацию пользовательских изменений.2. когда он изменится на true, извлеките новые изменения с сервера, затем нажмите буферизованные действия.
Слияние двух нот ...
Это может быть довольно сложно.Это действительно зависит от типа данных и от того, насколько вы терпимы к ошибкам синхронизации.
Мы обнаружили, что лучше всего обрабатывать проблемы синхронизации как можно ближе к источнику.Мы содержали проблемы с синхронизацией на стороне клиента, поэтому поврежденные данные никогда не попадут в БД.
Сама синхронизация ведет себя как git merge.
Когда автономное устройство извлекает обновленные данные, онобудет пытаться объединить буферизованные действия до отправки его на сервер.
- Если конфликт обнаружен, он попытается автоматически исправить его.добавление временных меток к каждому действию может помочь отсортировать порядок действий от нескольких устройств.
- , если автокоррекция не удалась, пользователю будет предложено разрешить ее вручную.
Я надеюсь, что этопомогает.