Это старый вопрос, но есть некоторая дополнительная информация, которая может оказаться полезной. Как упоминалось в предыдущих ответах, существует несколько вариантов синхронизации данных на основе текста. Многие из них основаны на Оперативном Преобразовании или CRDT . Эти подходы реализованы в SDK на многих языках. (Полное раскрытие, я один из авторов Конвергенции ).
Однако вам также необходимо принять во внимание некоторые другие функции, необходимые для реализации совместного редактирования. Например:
- Присутствие : Кто там с тобой редактирует?
- Информация о совместной работе : Такие вещи, как общие курсоры и выборки?
- Локальный против группы Отмена : Что происходит, когда пользователь нажимает control-z? Они отменяют последнее действие, которое они сделали, или последнее действие, которое сделали другие удаленные пользователи?
- История : Зная, кто сделал что сложнее, когда несколько человек редактируют одновременно. Когда один пользователь нажимает кнопку сохранения (если есть сохранение), он может сохранять действия, выполняемые другим пользователем.
Это всего лишь несколько примеров того, что следует учитывать при совместном редактировании, помимо синхронизации данных. Когда возникают эти вопросы, большинство ответов сосредоточены исключительно на структуре синхронизации данных. В Convergence Labs мы помогаем людям разрабатывать приложения для совместного редактирования и внедрили десятки таких приложений. Мы много раз видели, что если все, что вы вкладываете, это синхронизация данных, пользовательский опыт оказывается довольно плохим, и пользователям не понравится приложение.
Итак, при выборе платформы ищите что-то, что поможет вам реализовать некоторые другие аспекты редактирования в реальном времени, или, по крайней мере, будьте готовы реализовать их самостоятельно поверх любых выбранных вами инструментов.