Szukam biblioteki, która pozwoliłaby mi synchronizować tekst w czasie rzeczywistym pomiędzy wieloma użytkownikami (ala Google Docs).
Natknąłem się na Operacyjną Transformację, która wydaje się pasować do moich potrzeb. Powiedziawszy to, rozumiem istotę OT, ale nie rozumiem matematyki ani implementacji OT.
Dlatego zastanawiałem się, czy istnieje biblioteka Javascript typu drag'n'drop, która łączyłaby się z obszarem tekstowym, generowała transformacje, a następnie pozwalała mi zastosować te transformacje na innym kliencie?
(Mam źródło Etherpada, ale nie mogę z tego zrobić głowy ani ogonów. Jeśli ktoś mógłby wskazać, jak wykorzystać implementację OT Etherpada, to też będzie świetne!)
transform
etherpad
operational
gracze2000
źródło
źródło
Odpowiedzi:
Myślę, że części implementacji Google Wave OT to Open Source (i będzie ich więcej).
Nie jestem pewien, czy tego właśnie szukasz, ale alternatywą dla OT jest Synchronizacja Różnicowa :
źródło
Jeden z byłych inżynierów Wave wydał implementację Coffeescript swojego wspólnego algorytmu edycji o nazwie ShareJS, teraz o nazwie ShareDB .
źródło
Podsumuję znalezione rozwiązania.
Transformacja operacyjna: np
Synchronizacja różnicowa:
CRDT (przemienny replikowany typ danych):
źródło
Biblioteki OT:
W ramach projektu HWIOS websocket, z powodzeniem użyłem kombinacji obu (py-infinote po stronie serwera, jinfinote po stronie klienta) do synchronizacji stanów dokumentów.
źródło
Biblioteka ot.js https://github.com/Operational-Transformation/ot.js może być przydatna w scenariuszach z udziałem wielu użytkowników.
źródło
https://github.com/opencoweb/coweb
źródło
Rozwiązania tego problemu „pod klucz” lub „przeciągnij i upuść” tak naprawdę nie istniały ze względu na złożoność niezawodnej synchronizacji współdzielonego stanu zmiennego. Odpowiedź dmonad jest przyzwoity Roundup, a ja napisali przegląd bardziej up-to-date z dostępnych rozwiązań tutaj .
To pytanie jest dość stare, ale Convergence (zrzeczenie się: jestem założycielem) zapewnia najbardziej gotowe rozwiązanie, zapewniające nie tylko synchronizację danych, ale także wiele innych interfejsów API przydatnych do tworzenia wspólnego UX. Oto przykład pokazujący dokładnie to, o co prosiłeś: synchronizację pola tekstowego na wielu klientach.
W przeciwnym razie ShareDB to świetne rozwiązanie typu open source, które pasuje do potrzeb wielu ludzi.
źródło
Sprawdź również te biblioteki JavaScript:
źródło
Z biblioteką klienta js (Strophe.js) możesz użyć darmowego serwera XMPP (takiego jak jabber.org) wraz z moją biblioteką OT po stronie klienta (JSOTTEST), aby zbudować kompletny system klient-serwer.
Prześlę źródło demonstracyjnego systemu czatu klient-serwer, gdy będę miał czas na poprawienie kodu.
źródło
Npm ma kilka fajnych bibliotek OT dla node.js:
źródło
Możesz porozmawiać z chłopakami z Cedanet . Chociaż Ceda jest zamkniętym źródłem i na ich stronie internetowej nie jest dostępna bezpłatna wersja próbna. Byłem zaangażowany w rozwój Cedy i nadal pracuję z nim w projektach komercyjnych, więc jeśli pójdziesz tą ścieżką, być może będę mógł przekazać opinię / radę.
źródło
Uważam, że etherpad.org z etherpad lite jest lepszy od innych rozwiązań.
źródło
Tworzymy współpracujący edytor, który łączy transformację operacyjną z wersjonowaniem. W ten sposób możemy wspierać współpracę zarówno offline, jak i online. Wczoraj udostępniliśmy naszą własną bibliotekę OT jako część naszego stosu open source.
http://interior.substance.io/modules/operator.html
Udostępniliśmy również bibliotekę do wersjonowania.
http://interior.substance.io/modules/chronicle.html
źródło
Napisałem małą bibliotekę unixy (zrób jedną rzecz i zrób to dobrze), która implementuje warstwę kontrolną OT, umożliwiając podłączenie różnych typów OT (obsługuje wszystkie typy zgodne z shareJS). Jest podobny do shareJS, ale mniej uparty i bardziej abstrakcyjny.
https://github.com/marcelklehr/gulf
źródło