Showing
4 changed files
with
31 additions
and
0 deletions
| 1 | import { Connection } from "../connection/Connection"; | 1 | import { Connection } from "../connection/Connection"; |
| 2 | import { User } from "../user/User"; | 2 | import { User } from "../user/User"; |
| 3 | import { loginHandler } from "./handler/loginHandler"; | 3 | import { loginHandler } from "./handler/loginHandler"; |
| 4 | +import { roomChatHandler } from "./handler/roomChatHandler"; | ||
| 4 | import { roomJoinHandler } from "./handler/roomJoinHandler"; | 5 | import { roomJoinHandler } from "./handler/roomJoinHandler"; |
| 5 | import { roomLeaveHandler } from "./handler/roomLeaveHandler"; | 6 | import { roomLeaveHandler } from "./handler/roomLeaveHandler"; |
| 6 | import { Message, MessageType } from "./types"; | 7 | import { Message, MessageType } from "./types"; |
| ... | @@ -18,6 +19,11 @@ export class MessageHandlerRegistry { | ... | @@ -18,6 +19,11 @@ export class MessageHandlerRegistry { |
| 18 | MessageType.ROOM_LEAVE, | 19 | MessageType.ROOM_LEAVE, |
| 19 | roomLeaveHandler | 20 | roomLeaveHandler |
| 20 | ); | 21 | ); |
| 22 | + this.registerHandlerAuthed( | ||
| 23 | + connection, | ||
| 24 | + MessageType.ROOM_CHAT, | ||
| 25 | + roomChatHandler | ||
| 26 | + ); | ||
| 21 | } | 27 | } |
| 22 | 28 | ||
| 23 | private static registerHandler<T extends Message>( | 29 | private static registerHandler<T extends Message>( | ... | ... |
server/message/handler/roomChatHandler.ts
0 → 100644
| 1 | +import { Connection } from "../../connection/Connection"; | ||
| 2 | +import { RoomManager } from "../../room/RoomManager"; | ||
| 3 | +import { User } from "../../user/User"; | ||
| 4 | +import { RoomChatMessage, RoomJoinMessage } from "../types"; | ||
| 5 | + | ||
| 6 | +export function roomChatHandler(user: User, message: RoomChatMessage): void { | ||
| 7 | + user.room?.sendChat(user, message.message); | ||
| 8 | +} |
| ... | @@ -65,6 +65,17 @@ export class RoomUserUpdateMessage implements Message { | ... | @@ -65,6 +65,17 @@ export class RoomUserUpdateMessage implements Message { |
| 65 | ) {} | 65 | ) {} |
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | +/** | ||
| 69 | + * 클라 <-> 서버 | ||
| 70 | + * 접속한 방에서 채팅을 보내거나 받을 때 사용됩니다. 자신이 보낸 채팅은 서버에 의해 수신되지 않습니다. | ||
| 71 | + * @param message 메세지 내용입니다. | ||
| 72 | + * @param sender 채팅을 보낸 유저의 username입니다. 채팅이 클라이언트로 수신 될 경우에만 값을 가집니다. | ||
| 73 | + */ | ||
| 74 | +export class RoomChatMessage implements Message { | ||
| 75 | + readonly type = MessageType.ROOM_CHAT; | ||
| 76 | + constructor(public message: string, public sender?: string) {} | ||
| 77 | +} | ||
| 78 | + | ||
| 68 | export class MessageType { | 79 | export class MessageType { |
| 69 | static readonly LOGIN = "login"; | 80 | static readonly LOGIN = "login"; |
| 70 | static readonly ROOM_LIST = "room_list"; | 81 | static readonly ROOM_LIST = "room_list"; |
| ... | @@ -72,4 +83,5 @@ export class MessageType { | ... | @@ -72,4 +83,5 @@ export class MessageType { |
| 72 | static readonly ROOM_LEAVE = "room_leave"; | 83 | static readonly ROOM_LEAVE = "room_leave"; |
| 73 | static readonly ROOM_INFO = "room_info"; | 84 | static readonly ROOM_INFO = "room_info"; |
| 74 | static readonly ROOM_USER_UPDATE = "room_user_update"; | 85 | static readonly ROOM_USER_UPDATE = "room_user_update"; |
| 86 | + static readonly ROOM_CHAT = "room_chat"; | ||
| 75 | } | 87 | } | ... | ... |
| ... | @@ -3,6 +3,7 @@ import { v4 as uuidv4 } from "uuid"; | ... | @@ -3,6 +3,7 @@ import { v4 as uuidv4 } from "uuid"; |
| 3 | import { RoomData } from "./types"; | 3 | import { RoomData } from "./types"; |
| 4 | import { | 4 | import { |
| 5 | Message, | 5 | Message, |
| 6 | + RoomChatMessage, | ||
| 6 | RoomInfoMessage, | 7 | RoomInfoMessage, |
| 7 | RoomUserUpdateMessage, | 8 | RoomUserUpdateMessage, |
| 8 | } from "../message/types"; | 9 | } from "../message/types"; |
| ... | @@ -54,6 +55,10 @@ export class Room { | ... | @@ -54,6 +55,10 @@ export class Room { |
| 54 | } | 55 | } |
| 55 | } | 56 | } |
| 56 | 57 | ||
| 58 | + public sendChat(user: User, message: string): void { | ||
| 59 | + this.broadcast(new RoomChatMessage(message, user.username), user); | ||
| 60 | + } | ||
| 61 | + | ||
| 57 | public getData(): RoomData { | 62 | public getData(): RoomData { |
| 58 | return { | 63 | return { |
| 59 | uuid: this.uuid, | 64 | uuid: this.uuid, | ... | ... |
-
Please register or login to post a comment