1204 회의록 - boostcampwm2023/baekjoonrooms GitHub Wiki
프로젝트를 진행하면서 기획들이 조금씩 바뀌었는데 회의를 통해 바뀐 기획들을 한번에 정리하였다.
room에 join 대한 기획
- room에 join 할 때 먼저 http 요청을 통해 방 참가 가능 여부를 판단 후 room 페이지로 라우팅
- url로 직접 접근은 room 참가 가능 여부를 알수 없기에 참가가 불가능 -> url 통해 접근해도 다시 lobby로 라우팅
- 원래는 url을 통한 접근도 가능하게 하려 했으나 url을 통해 접근 시 room 존재 여부 등 room 참가 가능 여부를 판단 할 수 없음.
- room으로 라우팅 되면 웹 소켓 연결
room create에 대한 기획
- room 생성 후 나가도 다시 room 생성 가능
- room 생성 후 room을 나가지 않으면 다시 room 생성 불가능
host에 대한 기획
- host가 방을 나가도 host 권한 위임 없음.
- host가 나간 방은 삭제되진 않음.
- 남아 있는 사람들은 방에서 나가지진 않지만 host가 없으므로 시작이 안될테니 알아서 나가면 된다!
- 게임이 시작이 된 상태에선 host가 필요하지 않으니 host가 나가도 게임은 그대로 진행
데이터 베이스에 대한 기획
- 원래 user가 room 참가 여부를 room과 user가 one to many 관계로 user 테이블에 joined_room으로 관리 했었음.
- 이것을 user와 room이 many to many 관계로 해서 user와 room 사이에 room_user 테이블을 하나 생성해서 관리
room delete에 대한 기획
- 소켓 연결이 끊어질 때 room에 참가중인 user가 room에서 나갔다고 판단.
- 해당 room에 연결된 모든 소켓의 연결이 끊어지면 해당 room 삭제
익스텐션에 대한 기획
- 문제 채점 결과를 위한 url을 서버에 전송 시 누가 푼 문제인지를 알 수 없음.
- 클라이언트와 서버 사이에 통신시에는 클라이언트가 서버에 쿠키를 같이 보내주어서 채팅 등에 누가 보낸 요청인지 확인이 가능
- 익스텐션에서는 서버에 쿠키를 보내는것이 쉽지 않다고 판단
- 클라이언트가 로그인할 때 username 정도를 로컬스토리지에 저장 후 익스텐션은 로컬 스토리지에서 이를 가져와 서버에 같이 전송하기로 함
- 서버는 username을 이용해 누가 푼 문제인지 확인 가능