Protocol
서버와의 통신은 socket.io를 사용합니다.
모든 메세지 interface들은 server/message/types.ts
에 정의되어 있습니다.
로그인
서버에 LoginMessage
를 보냅니다. 아직 로그인 로직이 구현되지 않았으므로, 임의로 사용할 username
만을 포함하여 보내면 됩니다.
로비
로비에서는 모든 방 목록을 확인하고 접속할 수 있습니다. 로그인에 성공하면 서버에서 RoomListMessage
가 전송됩니다. 이 메세지는 모든 방에 관한 정보를 가지고 있습니다. 각 방은 고유한 uuid
값으로 구분됩니다.
특정한 방에 접속하기 위해서는 서버에 RoomJoinMessage
를 보내면 됩니다.
방
방 접속에 성공하면 RoomInfoMessage
가 수신됩니다. 이 메세지는 현재 방에 접속 중인 모든 유저의 정보를 가져옵니다. 모든 유저는 고유한 username
을 가지므로, 앞으로 모든 메세지는 유저의 username
만이 전송됩니다.
방에 접속중인 유저의 목록에 변화가 생기면, RoomUserUpdateMessage
가 수신됩니다. state
는 다음 3가지 값 중 하나의 값을 가집니다.
-
added
: 새로운 유저가 접속하였습니다. -
updated
: 기존 유저의 정보가 업데이트되었습니다. (아직 사용되지 않음) -
removed
: 유저가 방에서 퇴장하였습니다.
유저가 채팅을 입력했다면 RoomChatMessage
를 보내면 됩니다. 이 경우 오직 message
필드만 채워 보내면 됩니다. 다른 사람이 채팅을 입력한 경우, RoomChatMessage
가 수신됩니다. 자신이 보낸 채팅에 대해서는 RoomChatMessage
가 수신되지 않으므로 이 경우 오프라인으로 메세지를 추가하여야 합니다.
방을 나가고 싶으면 RoomLeaveMessage
를 보내면 됩니다.