Je recherche une bibliothèque qui me permettrait de synchroniser du texte en temps réel entre plusieurs utilisateurs (comme Google Docs).
Je suis tombé sur une transformation opérationnelle qui semble correspondre à mes besoins. Cela dit, je comprends l'essentiel de l'ergothérapie, mais pas le calcul, ni sa mise en œuvre.
Ainsi, je me demandais s’il existait une bibliothèque JavaScript drag'n'drop pouvant s’intégrer dans une zone de texte, générer les transformations, puis me permettre d’appliquer ces transformations sur un autre client?
(J'ai la source Etherpad, mais je ne peux pas en tirer la tête. Si quelqu'un pouvait indiquer comment tirer parti de la mise en œuvre d'Etherpad OT, ce serait génial aussi!)
Je pense que certaines parties de la mise en œuvre OT de Google Wave sont Open Source (et d'autres parties sont à venir).
Je ne sais pas si c'est ce que vous cherchez, mais une alternative à OT est synchronisation différentielle :
L'un des ingénieurs de Wave a publié une implémentation Coffeescript de son algorithme d'édition collaborative appelé ShareJS, désormais nommé ShareDB .
Je vais résumer les solutions que j'ai trouvées.
Transformation opérationnelle: par exemple.
Synchronisation différentielle:
CRDT (type de données répliquées commutatives):
Bibliothèques OT:
Dans le projet Websocket de HWIOS, j'ai utilisé avec succès une combinaison des deux (py-infinote au niveau du serveur, jinfinote au niveau du client) pour synchroniser les états des documents.
La bibliothèque ot.js https://github.com/Operational-Transformation/ot.js peut être utile pour les scénarios multi-utilisateurs.
Les solutions clé en main ou "glisser-déposer" à ce problème n'existent pas à cause de la complexité de la synchronisation fiable de l'état mutable partagé. La réponse de dmonad est un tour d'horizon décent, et j'ai posté un aperçu plus à jour des solutions disponibles ici .
Cette question est assez ancienne, mais Convergence (disclaimer: je suis un fondateur) fournit la solution la plus clé en main, fournissant non seulement la synchronisation des données, mais également un hôte d'autres API utiles pour la création d'une UX collaborative. Voici un exemple montrant exactement ce que vous avez demandé: la synchronisation d'un champ de texte sur plusieurs clients.
Sinon, ShareDB est une excellente solution open source qui répond aux besoins de beaucoup de gens.
Avec un client js lib (Strophe.js), vous pouvez utiliser un serveur XMPP gratuit (comme Jabber.org) avec mon OT lib côté client (JSOTTEST) pour créer un système client-serveur complet.
Je soumettrai le src d'un système de discussion démo client-serveur lorsque j'aurai le temps de réviser le code.
Npm a quelques bibliothèques Nice ot pour node.js:
Consultez également ces bibliothèques Javascript:
Vous pouvez parler aux gars de Cedanet . Bien que Ceda soit une source fermée, aucun essai gratuit n’est disponible sur leur site web. J'ai été impliqué dans le développement de Ceda et continue à travailler avec lui dans des projets commerciaux. Je pourrais donc être en mesure de fournir des retours/conseils si vous vous dirigez dans cette voie.
Nous construisons un éditeur collaborate qui combine la transformation opérationnelle avec la gestion des versions. De cette façon, nous pouvons prendre en charge la collaboration, hors ligne et en ligne. Nous avons publié hier notre propre bibliothèque OT dans le cadre de notre pile open source.
http://interior.substance.io/modules/operator.html
Nous avons également contribué à une bibliothèque pour la gestion des versions.
Je pense que etherpad.org avec etherpad lite est supérieur aux autres solutions.
J'ai écrit une petite bibliothèque unixy (faire une chose et bien le faire) qui implémente une couche de contrôle OT, vous permettant de connecter différents types OT (prend en charge tous les types conformes à shareJS) . C'est semblable à shareJS mais moins d'opinion et plus abstrait.