PROTOCOL.md 1.81 KB

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를 보내면 됩니다.