Showing
6 changed files
with
27 additions
and
14 deletions
... | @@ -12,7 +12,7 @@ | ... | @@ -12,7 +12,7 @@ |
12 | 12 | ||
13 | ## 로비 | 13 | ## 로비 |
14 | 14 | ||
15 | -로비에서는 모든 방 목록을 확인하고 접속할 수 있습니다. 로그인에 성공하면 서버에서 `RoomListMessage`가 전송됩니다. 이 메세지는 모든 방에 관한 정보를 가지고 있습니다. 각 방은 고유한 `uuid`값으로 구분됩니다. | 15 | +로비에서는 모든 방 목록을 확인하고 접속할 수 있습니다. 서버에 `RoomListRequestMessage`를 전송하면 `RoomDescription[]`가 반환됩니다. 이 메세지는 모든 방에 관한 정보를 가지고 있습니다. 각 방은 고유한 `uuid`값으로 구분됩니다. |
16 | 16 | ||
17 | 특정한 방에 접속하기 위해서는 서버에 `RoomJoinMessage`를 보내면 됩니다. 요청이 성공하면 `RoomInfo`가 반환됩니다. `RoomInfo`에는 본인을 제외한 다른 플레이어들의 정보만이 담겨 있습니다. | 17 | 특정한 방에 접속하기 위해서는 서버에 `RoomJoinMessage`를 보내면 됩니다. 요청이 성공하면 `RoomInfo`가 반환됩니다. `RoomInfo`에는 본인을 제외한 다른 플레이어들의 정보만이 담겨 있습니다. |
18 | 18 | ... | ... |
... | @@ -4,6 +4,7 @@ import { loginHandler } from "./handler/loginHandler"; | ... | @@ -4,6 +4,7 @@ import { loginHandler } from "./handler/loginHandler"; |
4 | import { roomChatHandler } from "./handler/roomChatHandler"; | 4 | import { roomChatHandler } from "./handler/roomChatHandler"; |
5 | import { roomJoinHandler } from "./handler/roomJoinHandler"; | 5 | import { roomJoinHandler } from "./handler/roomJoinHandler"; |
6 | import { roomLeaveHandler } from "./handler/roomLeaveHandler"; | 6 | import { roomLeaveHandler } from "./handler/roomLeaveHandler"; |
7 | +import { roomListRequestHandler } from "./handler/roomListRequestHandler"; | ||
7 | import { Message, MessageResponse, MessageType } from "./types"; | 8 | import { Message, MessageResponse, MessageType } from "./types"; |
8 | 9 | ||
9 | export class MessageHandlerRegistry { | 10 | export class MessageHandlerRegistry { |
... | @@ -11,6 +12,11 @@ export class MessageHandlerRegistry { | ... | @@ -11,6 +12,11 @@ export class MessageHandlerRegistry { |
11 | this.registerHandler(connection, MessageType.LOGIN, loginHandler); | 12 | this.registerHandler(connection, MessageType.LOGIN, loginHandler); |
12 | this.registerHandlerAuthed( | 13 | this.registerHandlerAuthed( |
13 | connection, | 14 | connection, |
15 | + MessageType.ROOM_LIST_REQUEST, | ||
16 | + roomListRequestHandler | ||
17 | + ); | ||
18 | + this.registerHandlerAuthed( | ||
19 | + connection, | ||
14 | MessageType.ROOM_JOIN, | 20 | MessageType.ROOM_JOIN, |
15 | roomJoinHandler | 21 | roomJoinHandler |
16 | ); | 22 | ); | ... | ... |
... | @@ -10,7 +10,5 @@ export function loginHandler( | ... | @@ -10,7 +10,5 @@ export function loginHandler( |
10 | connection.user = new User(message.username, connection); | 10 | connection.user = new User(message.username, connection); |
11 | console.log(`User ${message.username} has logged in!`); | 11 | console.log(`User ${message.username} has logged in!`); |
12 | 12 | ||
13 | - RoomManager.instance().sendList(connection); | ||
14 | - | ||
15 | return { ok: true }; | 13 | return { ok: true }; |
16 | } | 14 | } | ... | ... |
1 | +import { Connection } from "../../connection/Connection"; | ||
2 | +import { RoomManager } from "../../room/RoomManager"; | ||
3 | +import { RoomDescription, RoomInfo } from "../../room/types"; | ||
4 | +import { User } from "../../user/User"; | ||
5 | +import { MessageResponse, RoomListRequestMessage } from "../types"; | ||
6 | + | ||
7 | +export function roomListRequestHandler( | ||
8 | + user: User, | ||
9 | + message: RoomListRequestMessage | ||
10 | +): MessageResponse<RoomDescription[]> { | ||
11 | + return { ok: true, result: RoomManager.instance().list() }; | ||
12 | +} |
... | @@ -34,12 +34,12 @@ export class LoginMessage implements Message { | ... | @@ -34,12 +34,12 @@ export class LoginMessage implements Message { |
34 | } | 34 | } |
35 | 35 | ||
36 | /** | 36 | /** |
37 | - * 클라 <- 서버 | 37 | + * 클라 -> 서버 -> RoomDescription[] |
38 | - * 방 리스트를 서버에서 받아옵니다. | 38 | + * 방 목록을 요청합니다. |
39 | */ | 39 | */ |
40 | -export class RoomListMessage implements Message { | 40 | +export class RoomListRequestMessage implements Message { |
41 | - readonly type = MessageType.ROOM_LIST; | 41 | + readonly type = MessageType.ROOM_LIST_REQUEST; |
42 | - constructor(public rooms: RoomDescription[]) {} | 42 | + constructor() {} |
43 | } | 43 | } |
44 | 44 | ||
45 | /** | 45 | /** |
... | @@ -87,7 +87,7 @@ export class RoomChatMessage implements Message { | ... | @@ -87,7 +87,7 @@ export class RoomChatMessage implements Message { |
87 | 87 | ||
88 | export class MessageType { | 88 | export class MessageType { |
89 | static readonly LOGIN = "login"; | 89 | static readonly LOGIN = "login"; |
90 | - static readonly ROOM_LIST = "room_list"; | 90 | + static readonly ROOM_LIST_REQUEST = "room_list_request"; |
91 | static readonly ROOM_JOIN = "room_join"; | 91 | static readonly ROOM_JOIN = "room_join"; |
92 | static readonly ROOM_LEAVE = "room_leave"; | 92 | static readonly ROOM_LEAVE = "room_leave"; |
93 | static readonly ROOM_USER_UPDATE = "room_user_update"; | 93 | static readonly ROOM_USER_UPDATE = "room_user_update"; | ... | ... |
1 | -import { Connection } from "../connection/Connection"; | ||
2 | -import { RoomListMessage } from "../message/types"; | ||
3 | import { Room } from "./Room"; | 1 | import { Room } from "./Room"; |
4 | import { RoomDescription } from "./types"; | 2 | import { RoomDescription } from "./types"; |
5 | 3 | ||
... | @@ -35,12 +33,11 @@ export class RoomManager { | ... | @@ -35,12 +33,11 @@ export class RoomManager { |
35 | } | 33 | } |
36 | } | 34 | } |
37 | 35 | ||
38 | - public sendList(connection: Connection): void { | 36 | + public list(): RoomDescription[] { |
39 | var roomData: RoomDescription[] = []; | 37 | var roomData: RoomDescription[] = []; |
40 | this.rooms.forEach((room) => { | 38 | this.rooms.forEach((room) => { |
41 | roomData.push(room.getDescription()); | 39 | roomData.push(room.getDescription()); |
42 | }); | 40 | }); |
43 | - | 41 | + return roomData; |
44 | - connection.send(new RoomListMessage(roomData)); | ||
45 | } | 42 | } |
46 | } | 43 | } | ... | ... |
-
Please register or login to post a comment