diff --git a/Source/Services/Room.js b/Source/Services/Room.js index 98a1a43..6d26d40 100644 --- a/Source/Services/Room.js +++ b/Source/Services/Room.js @@ -366,6 +366,32 @@ addService(({ } break; } + case 'ejectroom':{ + let {roomId} = message; + let isRoom = Room.rooms.has(roomId); + if(isRoom) + { + let room = Room.rooms.get(roomId); + if(room.clients.has(client.id)) + { + room.eject(client) + return end({ + status : "success" + }) + }else{ + return end({ + status : "fail", + message : "ALREADY-ROOM-OUT" + }) + } + }else{ + return end({ + status : "fail", + message : "NOT-FOUND-ROOM" + }) + } + break; + } case 'accept/invite-room':{ let {roomId, clientId} = message; // Odanın varlığının kontrolü diff --git a/frontend/Room.ts b/frontend/Room.ts index e5b02b6..2d721b3 100644 --- a/frontend/Room.ts +++ b/frontend/Room.ts @@ -94,6 +94,16 @@ export default class Room extends EventTarget this.mwse.rooms.set(this.roomId as string, this); } } + async eject(){ + let {type} = await this.mwse.EventPooling.request({ + type:'ejectroom', + roomId: this.roomId + }); + if(type == 'success') + { + this.mwse.rooms.delete(this.roomId as string); + } + } async send(pack: any, wom:boolean = false){ await this.mwse.EventPooling.request({ type:'pack/room',