여러 사용자 (Google Docs)간에 실시간으로 텍스트를 동기화 할 수있는 라이브러리를 찾고 있습니다.
나는 내 요구에 맞는 것처럼 보이는 Operational Transformation을 우연히 발견했습니다. 그렇게 말하면서 나는 OT의 요지를 이해하지만 OT의 수학이나 구현은 이해하지 못합니다.
따라서 텍스트 영역에 연결하여 변환을 생성 한 다음 해당 변환을 다른 클라이언트에 적용 할 수있는 드래그 앤 드롭 Javascript 라이브러리가 있는지 궁금합니다.
(저는 Etherpad 소스를 얻었지만 머리와 꼬리를 만들 수 없습니다. 누군가 Etherpad의 OT 구현을 활용하는 방법을 지적 할 수 있다면 그것도 좋을 것입니다!)
답변
저는 Google Wave의 OT 구현의 일부가 오픈 소스라고 생각합니다 (더 많은 부분이 제공 될 예정입니다).
이것이 당신이 찾고있는 것인지 확실하지 않지만 OT의 대안은 차동 동기화입니다 .
- Google-Diff-Match-Patch-일반 텍스트 용 Diff, Match 및 Patch 라이브러리 : ” Diff Match 및 Patch 라이브러리는 일반 텍스트를 동기화하는 데 필요한 작업을 수행하는 강력한 알고리즘을 제공합니다. “
- Google-MobWrite-실시간 동기화 및 협업 서비스 : ” MobWrite는 양식과 웹 애플리케이션을 협업 환경으로 변환합니다. 간단한 단일 사용자 시스템을 만들고 JavaScript 한 줄을 추가하면 즉시 협업 시스템을 얻을 수 있습니다. “(Google-Diff 사용 -매치-패치.)
답변
전 웨이브 엔지니어 중 하나는 지금은 이름의 공동 편집 알고리즘이라는 ShareJS의 커피 스크립트 구현, 발표했다 ShareDB을 .
답변
내가 찾은 해결책을 요약하겠습니다.
-
운영 변환 : 예
- Google Wave OT. 접근 방식은 소위 목성 접근 방식을 기반으로합니다.
- ShareJs. Google Wave OT와 동일한 OT 알고리즘을 기반으로합니다.
- 거미줄 -jsoe. COT 기반-p2p 메시지 전파도 지원하는 매우 정교한 OT 접근 방식입니다.
- OpenCoweb. 그것은 많은 유사한 문제에 대해 완전한 프레임 워크를 제공하기 위해 OpenCoweb-jsoe를 활용합니다.
- OT.js는 ShareJ의 작업 유형을 기반으로합니다.
- DriveSDK. 많은 일을 할 수있는 매우 흥미로운 API (예 : 그래프 협업).
- SwellRT는 Apache Wave의 포크입니다. 페더레이션되고 서식있는 텍스트를 지원합니다.
-
차동 동기화 :
- Neil Fraser의 Diff-Match-Patch.
- MobWrite는 Diff-Match-Patch 알고리즘을 활용합니다.
-
- 공유 유형의 구현을 허용하는 다양한 CRDT 알고리즘이 있습니다. 일부 CRDT는 P2P 메시지 전파와 함께 작동하고 일부는 클라이언트-서버 모델에 의존합니다.
- Yjs를 사용하면 임의의 데이터 유형 (RichText, Array, Hash Maps, .. 확장 가능)을 공유 할 수 있습니다. P2P 통신 프로토콜에 대한 오프라인 지원 및 지원 (XMPP, Websockets 및 WebRTC 용 모듈이 있음)
- 오프라인을 지원하는 SwarmJS 클라이언트 서버 공유 데이터베이스. React와 잘 작동합니다.
- Woot Woot CRDT의 구현
- CRDT 또 다른 CRDT 구현
- 자동 병합
답변
OT 라이브러리 :
HWIOS 웹 소켓 프로젝트 내에서 문서 상태를 동기화하기 위해 두 가지 (서버 측의 py-infinote, 클라이언트 측의 jinfinote)의 콤보를 성공적으로 사용했습니다.
답변
ot.js 라이브러리 https://github.com/Operational-Transformation/ot.js 는 다중 사용자 시나리오에 유용 할 수 있습니다.
답변
답변
이 문제에 대한 턴키 또는 “드래그 앤 드롭”솔루션은 공유 가변 상태를 안정적으로 동기화하는 복잡성으로 인해 실제로 존재하지 않았습니다. dmonad의 응답은 괜찮은 편이고 여기에 사용 가능한 솔루션에 대한 최신 개요를 게시했습니다 .
이 질문은 꽤 오래되었지만 Convergence (면책 조항 : 저는 창립자입니다)는 데이터 동기화뿐만 아니라 협업 UX 구축에 유용한 다른 API 호스트를 제공하는 가장 턴키 솔루션을 제공합니다. 다음은 요청한 내용을 정확히 보여주는 예 입니다. 여러 클라이언트에서 텍스트 필드 동기화.
그렇지 않으면 ShareDB 는 많은 사람들의 요구에 맞는 훌륭한 오픈 소스 솔루션입니다.
