CREATE YOUR WORLD
멀티플레이
Room에서 특정 유저 Kick 하기
4분
특정 사용자를 런타임에 방에서 추방할 수 있습니다 서버 코드 index ts sandbox를 생성해 주세요 함수 정의 kick(client sandboxplayer, reason? string) promise; 이 함수는 sessionid를 가진 sandboxplayer를 받은 후 sandboxplayer를 추방하는 함수입니다 \ 추방되면 추방되었다는 알림 팝업이 나타나지만, 이 팝업은 zepeto 앱의 ui이며 편집기에서 확인할 수 없습니다 📘 다음 가이드를 참조해 주세요 \[ zepeto multiplay(server) api https //developer zepeto me/docs/multiplay server/classes/zepeto multiplay sandbox#kick ] 먼저 사용자 정보를 얻기 위해 schema types와 roomstate를 다음과 같이 정의합니다 사용 예시 userinfos의 데이터를 사용하여 퇴장할 사용자의 세션 id를 가져옵니다 세션 id로 샌드박스 플레이어를 가져온 후, 퇴장 기능을 호출합니다 방송을 통해 누가 퇴장했는지 알 수 있습니다 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}`); } } 👍 기본적으로 퇴장당한 사용자는 다시 방에 들어올 수 있습니다 이를 방지하기 위해, 퇴장당한 사용자의 방 정보를 userid 기반으로 datastorage 관리 기능을 사용하여 저장합니다 방에 들어가려고 할 때 퇴장 기능을 호출하여 구현할 수 있습니다