---
title: Room에서 특정 유저 Kick 하기
slug: world-sdk-guide-kr/room-kick
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

특정 사용자를 런타임에 방에서 추방할 수 있습니다.

:::hint{type="danger"}
- 서버 코드 index.ts Sandbox를 생성해 주세요.
:::

## 함수 정의

| kick(client: SandboxPlayer, reason?: string): Promise; | 이 함수는 SessionID를 가진 SandboxPlayer를 받은 후 SandboxPlayer를 추방하는 함수입니다.<br /><br />- 추방되면 추방되었다는 알림 팝업이 나타나지만, 이 팝업은 ZEPETO 앱의 UI이며 편집기에서 확인할 수 없습니다. |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |

:::hint{type="info"}
**📘&#x20;**&#xB2E4;음 가이드를 참조해 주세요. \[[ZEPETO.Multiplay(Server) API](https://developer.zepeto.me/docs/multiplay-server/classes/ZEPETO_Multiplay.Sandbox#kick)]
:::



먼저 사용자 정보를 얻기 위해 Schema Types와 RoomState를 다음과 같이 정의합니다:

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-oVK3n8knNlRPitGOhHD1y-20240904-102428.png)

## 사용 예시

- UserInfos의 데이터를 사용하여 퇴장할 사용자의 세션 ID를 가져옵니다.
- 세션 ID로 샌드박스 플레이어를 가져온 후, 퇴장 기능을 호출합니다.
- 방송을 통해 누가 퇴장했는지 알 수 있습니다.

```typescript
import { Sandbox, SandboxOptions, SandboxPlayer } from 'ZEPETO.Multiplay';
import { DataStorage, loadDataStorage } from 'ZEPETO.Multiplay.DataStorage';
import { UserInfo } from 'ZEPETO.Multiplay.Schema';

export default class extends Sandbox {

    onCreate(options: SandboxOptions) {
        this.onMessage("Kick", (client: SandboxPlayer, message: string) => {
            this.tryKick(client, message);
        });
    }

    onJoin(client: SandboxPlayer) {
        const user = new UserInfo();
        user.sessionId = client.sessionId;
        user.userId = client.userId;

        this.state.UserInfos.set(client.userId, user);
    }

    async tryKick(client: SandboxPlayer, userId: string) {
        let player: SandboxPlayer;
        if (userId == null) {
            player = client;
        } else {
            const kickPlayerSessionId: string = this.state.UserInfos.get(userId).sessionId;
            player = this.loadPlayer(kickPlayerSessionId);
        }

        console.log(`try kick : ${player.userId}`);
        await this.kick(player);

        this.broadcast("Log", `kick : ${player.userId}`);
    }
}
```

:::hint{type="success"}
**👍 기본적으로 퇴장당한 사용자는 다시 방에 들어올 수 있습니다.**

- 이를 방지하기 위해, 퇴장당한 사용자의 방 정보를 UserId 기반으로 DataStorage 관리 기능을 사용하여 저장합니다.
- 방에 들어가려고 할 때 퇴장 기능을 호출하여 구현할 수 있습니다.
:::

