[]
        
(Showing Draft Content)

js-collaboration-presence

js-collaboration-presencejs-collaboration을 기반으로 한 플러그인으로, 실시간 동시 작업을 위한 사용자 프레즌스 상태 관리 및 공유 기능을 제공합니다. 이 플러그인은 클라이언트 측(js-collaboration-presence-client)과 서버 측(js-collaboration-presence)으로 나뉩니다.

  • 클라이언트 측 (Presence): 로컬 사용자의 상태를 수집하여 서버로 전송하고, 다른 사용자들의 상태를 수신하는 역할을 합니다.

  • 서버 측 (presenceFeature): 모든 클라이언트의 상태를 브로드캐스트하고 조정하여, 동시 작업 룸 내에서 상태 데이터의 일관성을 보장하는 역할을 합니다.

적용 가능한 시나리오

사용자 활동 상태를 실시간으로 표시해야 하는 다음과 같은 시나리오에 적합합니다.

  • 텍스트 문서에서 동시 작업자의 커서 위치 표시

  • 스프레드시트에서 선택된 영역 표시

핵심 기능

실시간 사용자 상태 공유

  • 기능 설명

    js-collaboration-presence는 문서 내에서 클라이언트의 실시간 위치 정보를 관리하고 공유할 수 있습니다. 이 정보에는 사용자의 커서 위치, 선택 영역 등이 포함되며, 다른 사용자들이 문서의 현재 동시 작업 상태를 실시간으로 파악할 수 있도록 합니다.

  • 적용 시나리오

    • 다중 사용자 동시 작업 문서 편집 환경에서, 다른 사용자가 편집 중인 위치를 명확히 확인하여 중복 편집이나 충돌을 방지할 수 있습니다.

    • 스프레드시트 동시 작업 환경에서, 다른 사용자가 작업 중인 셀이나 영역을 실시간으로 확인하여 동시 작업을 보다 원활하게 할 수 있습니다.

사용자 이벤트 감지 및 알림

overview.e3bf59.png

  • 기능 설명

    js-collaboration-presence-client는 사용자 상태 변경을 구독하고 감지할 수 있도록 하여, 사용자의 프레즌스 상태가 변경될 때 특정 동작을 수행할 수 있게 합니다. 이러한 이벤트에는 사용자의 참여, 퇴장, 상태 업데이트(위치 업데이트, 선택 변경 등)가 포함됩니다.

  • 적용 시나리오

    • 새로운 사용자가 동시 작업 공간에 참여하면, 인터페이스를 자동으로 업데이트하여 해당 사용자의 프레즌스 상태를 표시할 수 있습니다.

    • 사용자가 프레즌스 상태를 업데이트하면(예: 커서 위치 변경), 모든 사용자가 동일한 정보를 볼 수 있도록 인터페이스를 실시간으로 업데이트할 수 있습니다.

다중 사용자 동시 작업 지원

architecture1.41753b.png

  • 기능 설명:

    js-collaboration-presencejs-collaborationjs-collaboration-ot와 원활하게 통합되어 완전한 동시 작업 플랫폼을 구축합니다. js-collaboration이 제공하는 양방향 연결과 js-collaboration-ot의 데이터 동기화 및 충돌 해결 기능을 통해, js-collaboration-presence는 실시간 동시 작업 환경에서 사용자 프레즌스 상태를 관리할 수 있습니다.

  • 적용 시나리오

    완전한 동시 작업 플랫폼에서 js-collaboration-presence는 사용자 프레즌스 상태 관리를 담당하고, js-collaborationjs-collaboration-ot는 데이터 동기화와 일관성을 처리하여, 함께 매끄러운 동시 작업 경험을 제공합니다.

제한 사항

js-collaboration-presence는 데이터 영속성을 지원하지 않습니다. 프레즌스 데이터는 서버 메모리에만 유지되며, 각 사용자의 최신 상태만 저장됩니다.

잠재적인 영향

  • 데이터 손실: 서버가 재시작되거나 클라이언트 연결이 끊어질 경우, 저장된 모든 프레즌스 상태(사용자 위치 및 선택 영역 포함)가 손실됩니다.

  • 영구 저장 미지원: 프레즌스는 사용자 상태를 디스크나 데이터베이스에 저장하는 기능을 제공하지 않으므로, 영구적인 사용자 상태가 필요한 시나리오에는 적합하지 않습니다.

권장 해결 방법

  • 주기적 백업: 프레즌스는 기본적으로 영속성을 지원하지 않지만, 메모리에 저장된 상태 정보를 외부 저장소로 주기적으로 백업하는 방식을 고려할 수 있습니다.

  • 커스텀 영속성 구현: 개발자는 사용자 상태를 데이터베이스에 저장하고, 서버 시작 시 이를 복원하는 커스텀 영속성 로직을 구현할 수 있습니다.

다음 단계

Presence를 사용하여 동시 작업 리치 텍스트 에디터를 구축하는 단계별 튜토리얼을 따라가 보세요.

튜토리얼: 실시간 동시 작업 텍스트 편집기에 Presence 기능 추가


핵심 개념과 API를 익혀 보세요.

각 모듈에서는 코드 예제를 통해 실제 사용 방법을 보여줍니다.