# Presence Server

## Content

서버 측 **Presence**는 모든 클라이언트의 Presence 데이터를 조정하고 브로드캐스트하여 동시 작업 룸 내에서 사용자 상태 정보가 실시간으로 동기화되도록 해야 합니다. [presenceFeature](/spreadjs/api/v19/collaboration/js-collaboration-presence/README#presencefeature) 메서드는 다음과 같은 주요 기능을 제공합니다.

* **상태 브로드캐스트**: 클라이언트가 제출한 상태를 수신하여 서버를 통해 다른 클라이언트로 브로드캐스트
* **상태 관리**: 현재 룸에 있는 모든 사용자의 최신 상태 유지

## API

### presenceFeature

서버 측에서 Presence 기능을 활성화합니다.

```typescript
export declare function presenceFeature(): IFeature
```

**반환값**
`IFeature`: Middleware와 Hook을 포함하는 기능 객체

## 사용 방법

1. npm 패키지 설치

    ```bash
    npm install @mescius/js-collaboration @mescius/js-collaboration-presence
    ```
2. 서버에 Presence 등록

    ```typescript
    import { presenceFeature } from '@mescius/js-collaboration-presence';
    
    server.useFeature(presenceFeature());
    ```

### 전체 예제

```typescript
import { createServer } from 'http';
import { Server } from 'js-collaboration';
import * as OT from 'js-collaboration-ot';
import { presenceFeature } from 'js-collaboration-presence';

OT.types.register(type);

const httpServer = createServer();
const server = new Server({ httpServer });

server.useFeature(OT.documentFeature());
server.useFeature(presenceFeature());

httpServer.listen(8080);
```