Ограничения:
- Клиенты немедленно применяют оптимистичные локальные обновления.
- Удаленные исправления могут приходить не по порядку.
- Клиенты могут отключаться от сети, а затем повторно подключаться.
- При повторном подключении сервер воспроизводит пропущенные операции.
- Документ может быть глубоко вложенным.
- Пользователи могут отменять и повторять локальные изменения.
Пример:
Код: Выделить всё
Client A applies:
{ op: "replace", path: "/user/name", value: "Alice" }
Client B applies:
{ op: "replace", path: "/user", value: { name: "Bob", age: 30 } }
Depending on patch order, different final states emerge.
- Отслеживаю очередь локальных операций
- Сохраняю номера версий для каждого документа
- Перебазирую удаленные исправления поверх локальных неподтвержденных исправлений
Я хочу избежать использования полной структуры CRDT без крайней необходимости из-за размера и сложности пакета.
Подробнее здесь: https://stackoverflow.com/questions/798 ... on-patch-s
Мобильная версия