# Server Connection Class

## Content

[Connection ](/spreadjs/api/v19/collaboration/js-collaboration/classes/Connection) 클래스는 서버와 클라이언트 인스턴스 간의 **양방향 통신 채널**을 나타내며, 메시지 송수신, 브로드캐스팅, 이벤트 관리를 가능하게 합니다.
서버는 클라이언트가 연결될 때 `Connection` 객체를 생성하며, 이 객체를 사용해 특정 클라이언트와의 통신을 관리합니다. 서버는 **Middleware**와 **Hooks**를 통해 이 객체에 접근합니다.

## 속성

**id**: 연결의 고유 식별자 (string)

```typescript
console.log(connection.id); // "XBtqzsRMPh7MaVvaAAAB"
```

**roomId**: 연결이 속한 룸의 ID (string)
**query**: 클라이언트가 연결 시 전달한 쿼리 파라미터 (키-값 객체)
**auth**: 클라이언트의 인증 데이터 (키-값 객체)
**tags**: 사용자 정의 데이터를 저장하기 위한 Map

```typescript
connection.tags.set('role', 'admin');
```

## 메소드

### send

`send` 메서드를 사용하여 서버로 메시지를 전송합니다.

```typescript
send(data: MessageData, type?: MessageType): void;
```

**매개변수**

* `data`: 전송할 데이터
* `type`(선택): 메시지의 목적이나 범주를 식별하기 위한 메시지 타입

### broadcast

`broadcast()` 메서드를 사용하여 동일한 룸에 있는 클라이언트들에게 메시지를 브로드캐스트합니다.

```typescript
broadcast(data: MessageData, type?: MessageType, includeSelf?: boolean): void;
```

**매개변수**

* `data`: 전송할 메시지 내용
* `type`: 메시지 타입, 기본값은 빈 문자열
* `includeSelf`(선택): `true`로 설정하면 현재 연결을 포함한 룸 내 모든 클라이언트가 메시지를 수신

**예시**

* 송신자를 제외한 동일 룸의 모든 클라이언트에게 메시지 브로드캐스트:

```typescript
connection.broadcast('hello, client!');
```

* 송신자를 포함한 동일 룸의 모든 클라이언트에게 메시지 브로드캐스트:

```typescript
connection.broadcast('hello, client!', '', true);
```

### close

`close` 메서드를 사용하여 클라이언트와의 연결을 종료합니다.

```typescript
connection.close();
```

이 메서드는 현재 클라이언트와의 연결을 종료하고 관련 리소스를 정리합니다.