Это не столько вопрос с простым, практичным ответом, сколько вопрос, способствующий обсуждению темы обмена данными в режиме реального времени.
Начну с примера:
Google Wave по своей сути является механизмом асинхронной синхронизации данных в реальном времени. Wave поддерживает (или планирует поддерживать) одновременную (в режиме реального времени) совместную работу с документами, редактирование автономных (автономных) документов, разрешение конфликтов, историю и воспроизведение документов с атрибуцией и объединение серверов.
Основной частью Wave является механизм оперативного преобразования: http://www.waveprotocol.org/whitepapers/operational-transform
Механизм OT управляет состоянием документа. Изменения между клиентами объединяются, и каждый клиент всегда имеет разумный и последовательный взгляд на документ; окончательный документ в конечном итоге согласован между всеми подключенными клиентами.
Мой вопрос: является ли эта система абстрактной или достаточно общей, чтобы ее можно было использовать в качестве библиотеки или универсальной структуры, на которой можно создавать веб-приложения, синхронизирующие асинхронное состояние в реальном времени на каждом клиенте?
Использует ли протокол Wave непосредственно какие-либо современные веб-приложения (кроме клиента Google)? Имеет ли смысл напрямую использовать его для общей синхронизации состояний в веб-приложении?
Какие еще существующие библиотеки или интегрированные среды вы бы хотели использовать при создании такого веб-приложения?
Сколько кода в таком приложении может быть предметно-ориентированной логикой по сравнению с общей логикой синхронизации состояний? Или, другими словами, насколько утечки могут быть абстракции синхронизации состояний?
Комментарии и обсуждение приветствуются!