Ich suche nach einer Bibliothek, mit der ich Text in Echtzeit zwischen mehreren Benutzern synchronisieren kann (z. B. Google Text & Tabellen).
Ich bin auf Operational Transformation gestoßen, die meinen Bedürfnissen zu entsprechen scheint. Trotzdem verstehe ich den Kern von OT, aber nicht die Mathematik oder Implementierung von OT.
Daher habe ich mich gefragt, ob es eine Drag'n'Drop-Javascript-Bibliothek gibt, die sich in einen Textbereich einfügt, die Transformationen generiert und mir dann erlaubt, diese Transformationen auf einen anderen Client anzuwenden.
(Ich habe die Etherpad-Quelle erhalten, aber ich kann weder Kopf noch Zahl daraus machen. Wenn jemand darauf hinweisen könnte, wie er die OT-Implementierung von Etherpad nutzen kann, ist das auch großartig!)
quelle
Antworten:
Ich denke, dass Teile der OT-Implementierung von Google Wave Open Source sind (und weitere Teile kommen).
Ich bin mir nicht sicher, ob Sie danach suchen, aber eine Alternative zu OT ist die differenzielle Synchronisierung :
quelle
Einer der Ex-Wave-Ingenieure hat eine Coffeescript-Implementierung seines kollaborativen Bearbeitungsalgorithmus namens ShareJS veröffentlicht, der jetzt ShareDB heißt .
quelle
Ich werde die Lösungen zusammenfassen, die ich gefunden habe.
Operative Transformation: ZB
Differenzielle Synchronisation:
CRDT (Commutative Replicated Data Type):
quelle
OT-Bibliotheken:
Innerhalb des HWIOS-Websocket-Projekts habe ich erfolgreich eine Kombination aus beiden (py-infinote auf der Serverseite, jinfinote auf der Clientseite) verwendet, um Dokumentzustände zu synchronisieren.
quelle
Die ot.js-Bibliothek https://github.com/Operational-Transformation/ot.js kann für Mehrbenutzerszenarien hilfreich sein.
quelle
https://github.com/opencoweb/coweb
quelle
Schlüsselfertige oder "Drag & Drop" -Lösungen für dieses Problem gab es aufgrund der Komplexität der zuverlässigen Synchronisierung des gemeinsam genutzten veränderlichen Status nicht wirklich. dmonad Antwort ist ein anständiger Roundup, und ich schrieb einen mehr up-to-date Überblick über die verfügbaren Lösungen hier .
Diese Frage ist ziemlich alt, aber Convergence (Haftungsausschluss: Ich bin ein Gründer) bietet die schlüsselfertigste Lösung auf dem Markt und bietet nicht nur Datensynchronisation, sondern auch eine Vielzahl anderer APIs, die für den Aufbau einer kollaborativen UX nützlich sind. Hier ist ein Beispiel, das genau zeigt, was Sie angefordert haben: Synchronisierung eines Textfelds über mehrere Clients hinweg.
Ansonsten ist ShareDB eine großartige Open-Source-Lösung, die den Bedürfnissen vieler Menschen gerecht wird.
quelle
Schauen Sie sich auch diese Javascript-Bibliotheken an:
quelle
Mit einer js-Client-Bibliothek (Strophe.js) können Sie einen kostenlosen XMPP-Server (wie jabber.org) zusammen mit meiner clientseitigen OT-Bibliothek (JSOTTEST) verwenden, um ein vollständiges Client-Server-System zu erstellen.
Ich werde den Quellcode eines Demo-Client-Server-Chat-Systems senden, wenn ich Zeit habe, den Code zu überarbeiten.
quelle
Npm hat einige nette Bibliotheken für node.js:
quelle
Sie könnten mit den Jungs von Cedanet sprechen . Obwohl Ceda eine geschlossene Quelle ist und auf ihrer Website keine kostenlose Testversion verfügbar ist. Ich war an der Entwicklung von Ceda beteiligt und arbeite weiterhin mit ihm in kommerziellen Projekten, sodass ich möglicherweise Feedback / Ratschläge geben kann, wenn Sie diesen Weg beschreiten.
quelle
Ich denke, etherpad.org mit etherpad lite ist anderen Lösungen überlegen.
quelle
Wir erstellen einen Collaborate-Editor, der Operational Transformation mit Versionierung kombiniert. Auf diese Weise können wir sowohl Offline- als auch Online-Zusammenarbeit unterstützen. Wir haben gestern unsere eigene OT-Bibliothek als Teil unseres Open-Source-Stacks veröffentlicht.
http://interior.substance.io/modules/operator.html
Wir haben auch eine Bibliothek für die Versionierung beigesteuert.
http://interior.substance.io/modules/chronicle.html
quelle
Ich habe eine kleine Unixy-Bibliothek geschrieben (machen Sie eine Sache und machen Sie es gut), die eine OT-Kontrollschicht implementiert, mit der Sie verschiedene OT-Typen anschließen können (unterstützt alle ShareJS-kompatiblen Typen). Es ist ähnlich wie shareJS, aber weniger eigensinnig und abstrakter.
https://github.com/marcelklehr/gulf
quelle