문제

여러 사용자 (ALA Google DOCS)간에 텍스트를 실시간으로 동기화 할 수있는 라이브러리를 찾고 있습니다.

나는 운영 변화에 걸려 넘어 졌는데, 그것은 내 요구에 맞는 것 같습니다. 나는 OT의 요점을 이해하지만 OT의 수학이나 구현은 아닙니다.

따라서 텍스트 영역에 연결되어 변환을 생성 한 다음 다른 클라이언트에 해당 변환을 적용 할 수있는 Drag'n'drop JavaScript 라이브러리가 있는지 궁금합니다.

(나는 EtherPad 소스를 얻었지만 머리 나 꼬리를 만들 수는 없습니다. 누군가 EtherPad의 구현을 활용하는 방법을 지적 할 수 있다면, 그게 좋을 것입니다!)

도움이 되었습니까?

해결책

Google Wave의 OT 구현의 일부는 오픈 소스이며 더 많은 부분이 다가오고 있다고 생각합니다.

이것이 당신이 찾고있는 것인지 확실하지 않지만 OT의 대안은 차동 동기화:

다른 팁

전파 엔지니어 중 한 명이 현재 명명 된 ShareJS라는 협업 편집 알고리즘의 커피 스크립트 구현을 출시했습니다. Sharedb.

내가 찾은 솔루션을 요약하겠습니다.

  • 운영 변환 : 예를 들어

    • Google Wave OT. 이 접근법은 소위 목성 접근 방식을 기반으로합니다.
    • sharejs. Google Wave OT와 동일한 OT 알고리즘을 기반으로합니다.
    • Coweb-jsoe. COT를 기반으로 - P2P 메시지 전파를 지원하는 매우 정교한 OT 접근법.
    • 오펜 코브. 그것은 많은 유사한 문제에 대한 본격적인 프레임 워크를 제공하기 위해 OpenCoweb-jsoe를 활용합니다.
    • OT.JS는 ShareJS의 작동 유형을 기반으로합니다.
    • DriveSDK. 많은 일을 할 수있는 매우 흥미로운 API (예 : 그래프에 대한 협업).
    • Swellrt는 Apache Wave의 포크입니다. IS는 연합되어 있으며 풍부한 텍스트를 지원합니다.
  • 차동 동기화 :

    • Neil Fraser의 Diff-Match-Patch.
    • Mobwrite는 Diff-Match-Patch 알고리즘을 활용합니다.
  • CRDT (정류 복제 데이터 유형) :

    • 공유 유형의 구현을 허용하는 다양한 CRDT 알고리즘이 있습니다. 일부 CRDT는 P2P 메시지 전파와 함께 작동하며 일부 CRDT는 클라이언트 서버 모델에 의존합니다.
    • yjs 임의의 데이터 유형 (Richtext, Array, Hash Maps, Extendable)을 공유 할 수 있습니다. P2P 통신 프로토콜에 대한 오프라인 지원 및 지원 (XMPP, Websockets 및 WebRTC 용 모듈이 있음)
    • Swarmjs 클라이언트 서버 공유 데이터베이스가 오프라인 지원을 제공합니다. React와 잘 작동합니다
    • woot Woot CRDT의 구현
    • CRDT 또 다른 CRDT 구현
    • 자동차

OT 라이브러리 :

HWIOS WebSocket 프로젝트 내에서, 나는 문서 상태를 동기화하기 위해 둘 다 (서버 사이드의 py-infinote, jinfinote)의 콤보를 성공적으로 사용했습니다.

OT.JS 라이브러리 https://github.com/operational-transformation/ot.js 다중 사용자 시나리오에 유용 할 수 있습니다.

이 문제에 대한 턴키 또는 "드래그 앤 드롭"솔루션은 공유 된 돌연변이 상태를 안정적으로 동기화하는 복잡성으로 인해 실제로 존재하지 않았습니다. Dmonad의 응답은 괜찮은 라운드 업이며 사용 가능한 솔루션에 대한 최신 개요를 게시했습니다. 여기.

이 질문은 꽤 오래되었지만 수렴 (면책 조항 : 저는 설립자입니다)는 데이터 동기화뿐만 아니라 협업 UX를 구축하는 데 유용한 다른 API를 제공하는 가장 많은 턴키 솔루션을 제공합니다. 여기 예입니다 요청한 내용을 정확하게 표시 : 여러 클라이언트에서 텍스트 필드의 동기화.

그렇지 않으면, Sharedb 많은 사람들의 요구에 맞는 훌륭한 오픈 소스 솔루션입니다.

이 JavaScript 라이브러리도 확인하십시오.

JS 클라이언트 LIB (Strophe.js)를 사용하면 클라이언트 측 OT LIB (JSOTTEST)와 함께 무료 XMPP 서버 (예 : JABBER.org)를 사용하여 완전한 클라이언트 서버 시스템을 구축 할 수 있습니다.

코드를 수정할 시간이 있으면 데모 클라이언트-서버 채팅 시스템의 SRC를 제출하겠습니다.

NPM에는 node.js 용 멋진 구약 라이브러리가 있습니다.

  • https://npmjs.org/package/ot - Codemirror 및 Ace 내장 어댑터 및 클라이언트 및 서버 구현
  • https://npmjs.org/package/changesets - 노드 및 브라우저에서 사용할 수있는 일반 OT 라이브러리; 주위를 보낼 수있는 '변경 사항'(본질적으로 차이)을 구축 할 수 있습니다.

당신은 사람들과 이야기 할 수 있습니다 세다넷. CEDA는 폐쇄 소스이며 웹 사이트에서 무료 평가판을 사용할 수 없습니다. 나는 CEDA의 개발에 관여했으며 상업 프로젝트에서 계속 협력 했으므로이 길을 따라 가면 피드백/조언을 제공 할 수 있습니다.

Etherpad lite가있는 etherpad.org는 다른 솔루션보다 우수합니다.

우리는 운영 변환과 버전 관리를 결합한 협업 편집기를 구축하고 있습니다. 이렇게하면 오프라인 및 온라인 콜라 브를 모두 지원할 수 있습니다. 우리는 어제 오픈 소스 스택의 일환으로 OT Library를 출시했습니다.

http://interior.substance.io/modules/operator.html

우리는 또한 버전 작성 라이브러리를 기부했습니다.

http://interior.substance.io/modules/chronicle.html

나는 OT 컨트롤 레이어를 구현하는 작은 Unixy (한 가지 일을 잘하고 잘 수행)를 작성하여 다른 OT 유형을 연결할 수 있도록했습니다 (모든 sharejs 준수 유형을 지원). Sharejs와 비슷하지만 의견이 적고 추상적이지 않습니다.

https://github.com/marcelklehr/gulf

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top