# js-collaboration

## Content

`js-collaboration`은 클라이언트와 서버 간 실시간 데이터 동기화를 위한 **낮은 지연 시간(low-latency)**, **양방향 통신**을 가능하게 하는 라이브러리입니다.​ 이는 클라이언트 측([js-collaboration-client](/spreadjs/api/collaboration/js-collaboration-client/README#spreadjs-api))과 서버 측([js-collaboration](/spreadjs/api/collaboration/js-collaboration/README#spreadjs-api))으로 나뉩니다.

## 핵심 기능

* **양방향 연결:** 실시간 데이터 동기화를 보장하면서 클라이언트-서버 간 양방향 통신을 가능하게 합니다.
* **룸**: 체계적인 다중 사용자 조정을 위해 룸 수명 주기 작업(생성/참여/나가기)을 지원합니다.
* **브로드캐스팅**: 모든 룸 참가자에게 메시지를 브로드캐스팅하여 실시간 알림을 전달할 수 있습니다.
* **하트비트 및 자동 재연결**: 지속적인 연결을 유지하기 위해 하트비트 모니터링과 자동 재연결 메커니즘을 구현합니다.
* **미들웨어 및 후크 시스템​**:
    * 미들웨어는 연결 및 메시지 처리 과정에서 사용자 지정 로직을 삽입하기 위한 메커니즘을 제공합니다. 사용자가 서버 파이프라인에 후킹하여 인증, 권한 등을 처리할 수 있습니다.
    * 후크는 주요 이벤트가 발생할 때 사용자 지정 처리 로직을 트리거하기 위한 메커니즘을 제공합니다.

## 룸 정보

초기화 단계는 클라이언트가 서버에 WebSocket 연결을 시작하면 완료됩니다. 서버는 동시 클라이언트 세션을 관리하기 위해 ​**​룸 기반 아키텍처​**​를 사용하며, 각 룸은 격리된 동기화 컨텍스트를 나타냅니다. 동시 작업 중 서버는 브로드캐스트 메커니즘을 통해 동일한 룸 내의 클라이언트에 실시간 메시지를 **브로드캐스팅**합니다.
브로드캐스트에 대해 자세히 알아보려면 [메시지 송수신](/spreadjs/docs/spreadjs-collaboration-server/collaboration-framework/js-collaboration/messages-sending-and-receiving)을 참조하세요.​
![overview-room.4e4969.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/overview-room.4e4969-20251229.77e77b.png?width=500)

## 다음 단계

다음 단계별 자습서를 따라 `js-collaboration`을 사용하여 실시간 채팅 룸을 구축하고 사용자 인증 기능을 구현해 보세요:

* [튜토리얼: 실시간 채팅방](/spreadjs/docs/spreadjs-collaboration-server/collaboration-framework/js-collaboration/tutorial-real-time-chat-room)
* [튜토리얼: 인증 추가](/spreadjs/docs/spreadjs-collaboration-server/collaboration-framework/js-collaboration/tutorial-real-time-chat-room/tutorial-add-authentication)

`js-collaboration`의 핵심 개념과 API를 다음 항목을 포함하여 익힙니다:

* client/server 초기화
* 실시간 연결 관리
* 서버 미들웨어 메커니즘
* 메시지 송수신 구현
* 권한 부여 시스템 구축

각 모듈은 코드 예제를 통해 실제 사용 방법을 보여줍니다. 왼쪽 탐색 바에 있는 튜토리얼 경로를 따라 단계적으로 실습하는 것을 권장합니다.