Операционная трансформация в Meteor.js?

Поддерживает ли Meteor.js операционную трансформацию?

Я работаю над проектом, который связан с Etherpad, для которого я думал использовать Meteor.js(который, я думаю, очень подходит для такого проекта). Операционные преобразования очень важны для моего проекта, если я думаю о его масштабировании. Мои текущие знания показывают, что метеор не поддерживает операционную трансформацию из коробки (исправьте меня, если я ошибаюсь здесь). Итак, в основном мой вопрос: как реализовать операционное преобразование в meteor.js?

Я попытался использовать эту библиотеку google-diff-match-patch, Нейл Фрейзер, но были проблемы при применении патчей (хотя он довольно легко работал вне meteor.js).

Итак, любые предложения?

Ответ 1

После просмотра нескольких проектов Meteor используют OT (т.е. http://cocodojo.meteor.com/), я решил пойти на правильную интеграцию.

Я создал интеллектуальный пакет для интеграции ShareJS в метеорит. Пожалуйста, присмотрите его и добавьте ваши запросы на тягу: https://github.com/mizzao/meteor-sharejs

Демо-приложение: http://documents.meteor.com

Ответ 2

В совместном текстовом редакторе в браузере есть два основных компонента: сама текстовая область, которая должна вести себя хорошо, координируя ввод пользователя с другими изменениями, полученными с сервера; и модель данных для отправки, приема и объединения этих изменений.

Сегодня Meteor не предоставляет особой помощи ни для одной из этих вещей, но обеспечивает передачу данных в реальном времени и способ автоматического перемещения данных между клиентом и сервером.

Если бы я должен был реализовать EtherPad на Meteor, я всегда думал, что буду использовать коллекцию как "журнал операций". Пользовательские изменения будут отправлены на сервер, где они будут добавлены к официальному журналу операций (в основном, разным), который автоматически будет передаваться всем клиентам. Клиент будет работать с применением различий, которые входят и согласовывают их с типом, который еще не был подтвержден сервером.

Это сложная задача реализации. Удачи!