Какой сервер для оперативных операций преобразования? - PullRequest
2 голосов
/ 30 января 2012

Я надеюсь использовать алгоритмы Diff-Match-Patch, доступные от google, в дополнение к протоколу совместного текстового редактора Google-Mobwrite в реальном времени, чтобы встроить совместный текстовый редактор в реальном времени в мою программу.

В любом случае мне было интересно, что именно может быть наиболее эффективным способом хранения «глобальных» копий каждого документа, который редактируют пользователи. Мне бы хотелось, чтобы каждый документ хранился на сервере, который не является локальным для какого-либо пользователя, и каждый раз, когда пользователь выполняет «операцию» (удаление вставки, вставку, вырезание), вычисление различий между его копией и сервером, его исправлением и т. Д. ... если вы знаете протокол Google mobwrite, вы, вероятно, понимаете, о чем я говорю.

Должны ли серверные текстовые файлы храниться в виде измененного файла или в базе данных sql в виде длинной строки или как? Должен ли я использовать веб-сокеты для связи с сервером? Я честно любитель, когда дело доходит до этого, но я, как правило, быстро учусь. У кого-нибудь есть какие-либо советы или ресурсы, которым я мог бы следовать? Большое спасибо

Ответы [ 2 ]

1 голос
/ 16 сентября 2012

Это будет большой проект с нуля, поэтому я предлагаю вам использовать один из многих проектов с открытым исходным кодом в этой области. Например, etherPad:

https://code.google.com/p/etherpad/

0 голосов
/ 05 мая 2014

Mobwrite использует технику дифференциальной синхронизации и полностью отличается от техники оперативного преобразования.

Дифференциальная синхронизация Предполагается, что круг общения всегда начинается с клиента (браузера), что означает, что вы не можете использовать веб-сокеты для прямой отправки различий с сервера.Браузер должен часто запрашивать у сервера обновления (например, каждые 2 секунды), иначе ваши теневые копии будут не синхронизированы.

Для хранения ваших теневых копий, когда пользователь активен, выМожно использовать все, что вы хотите, но лучше использовать БД в памяти (Redis), так как вам нужен быстрый доступ для выполнения различий и патчей.И когда пользователь покидает сеанс, вам больше не нужна его копия.Но, если вам нужно постоянство в вашем приложении, вы должны сохранять только серверную копию, а не теневую (теневые копии используются для поиска различий), тогда вы можете использовать MySQL или что угодно.

Но для техники Оперативного Преобразования есть несколько хороших библиотек

NodeJS :

  • ShareJS (sharejs.org): поддерживает всеоперации для JSON.
  • RacerJS: модель синхронизации, построенная на основе ShareJS
  • DerbyJS: полная структура, использующая RacerJS в качестве своей модели.

OpenCoweb (opencoweb.org): сервер является Java или Python, клиент построен с Dojo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...