Showing
1 changed file
with
28 additions
and
0 deletions
PROTOCOL.md
0 → 100644
1 | +# Protocol | ||
2 | + | ||
3 | +서버와의 통신은 socket.io를 사용합니다. | ||
4 | +모든 메세지 interface들은 `server/message/types.ts`에 정의되어 있습니다. | ||
5 | + | ||
6 | +## 로그인 | ||
7 | + | ||
8 | +서버에 `LoginMessage`를 보냅니다. 아직 로그인 로직이 구현되지 않았으므로, 임의로 사용할 `username`만을 포함하여 보내면 됩니다. | ||
9 | + | ||
10 | +## 로비 | ||
11 | + | ||
12 | +로비에서는 모든 방 목록을 확인하고 접속할 수 있습니다. 로그인에 성공하면 서버에서 `RoomListMessage`가 전송됩니다. 이 메세지는 모든 방에 관한 정보를 가지고 있습니다. 각 방은 고유한 `uuid`값으로 구분됩니다. | ||
13 | + | ||
14 | +특정한 방에 접속하기 위해서는 서버에 `RoomJoinMessage`를 보내면 됩니다. | ||
15 | + | ||
16 | +### 방 | ||
17 | + | ||
18 | +방 접속에 성공하면 `RoomInfoMessage`가 수신됩니다. 이 메세지는 현재 방에 접속 중인 모든 유저의 정보를 가져옵니다. 모든 유저는 고유한 `username`을 가지므로, 앞으로 모든 메세지는 유저의 `username`만이 전송됩니다. | ||
19 | + | ||
20 | +방에 접속중인 유저의 목록에 변화가 생기면, `RoomUserUpdateMessage`가 수신됩니다. `state`는 다음 3가지 값 중 하나의 값을 가집니다. | ||
21 | + | ||
22 | +- `added`: 새로운 유저가 접속하였습니다. | ||
23 | +- `updated`: 기존 유저의 정보가 업데이트되었습니다. (아직 사용되지 않음) | ||
24 | +- `removed`: 유저가 방에서 퇴장하였습니다. | ||
25 | + | ||
26 | +유저가 채팅을 입력했다면 `RoomChatMessage`를 보내면 됩니다. 이 경우 오직 `message` 필드만 채워 보내면 됩니다. 다른 사람이 채팅을 입력한 경우, `RoomChatMessage`가 수신됩니다. 자신이 보낸 채팅에 대해서는 `RoomChatMessage`가 수신되지 않으므로 이 경우 오프라인으로 메세지를 추가하여야 합니다. | ||
27 | + | ||
28 | +방을 나가고 싶으면 `RoomLeaveMessage`를 보내면 됩니다. |
-
Please register or login to post a comment