5. 채널 설계
channel
라이브, 채팅룸 리스트, 랭킹, 토너먼트 페이지는 실시간이 아닌 페이지 새로고침을 따로 만들어서 동기화를 하자.
패시브 - 항상 구독중
액티브 - 이벤트에 따라 구독, 취소
notification - 패시브
다이렉트 메시지가 온 것을 수신하여 appearance가 업데이트되도록 한다.
상대가 대전 신청을 받지 않거나 거절한 것을 수신하여 하단 게임 신청 뷰를 제거하도록 한다.
상대가 대전 신청을 받은 것을 수신하여 게임뷰로 이동하도록 한다.
appearance - 패시브
친구목록과 친구들의 로그인 상황을 표시하고 추적한다.
온라인 접속 중인 유저들의 목록을 표시하고 추적한다.
directChat - 액티브
directMessage가 켜지면 구독한다.
message를 수신하면 업데이트한다.
message 입력시 웹소켓으로 발송한다.
directMessage가 꺼지면 구독을 해제한다.
groupChat - 액티브
groupChatRoom에 입장하면 구독한다.
message를 수신하면 업데이트한다.
message 입력시 웹소켓으로 발송한다.
groupChatRoom에서 다른 페이지로 이동하거나, 나갈 때 구독을 해제한다.
ban 당했음을 통보 받으면 구독을 해제하고 채팅 리스트로 이동한다.
승급/강등 사실을 통보받으면 자신의 멤버십 상태(front)를 업데이트한다.
game - 액티브
게임이 진행중인 동안 플레이어와 게스트가 구독한다.
게임이 시작되면 시작 알림을 받는다. 시작 알림에는 사용할 룰, 양쪽 플레이어의 정보와 사이드(L/R)가 포함되어 있다.
me의 패들과 공이 충돌할 때 서버에 변화된 공의 성질이 담긴 메시지를 웹소켓으로 발송한다.
me의 패들을 움직일 때마다 패들의 위치가 담긴 메시지를 웹소켓으로 발송한다.
실점시마다 웹소켓으로 메시지를 발송한다.
서버에서 전송되어오는 메시지에 담긴 패들, 공, 점수의 정보를 프론트 모델에 업데이트한다.
중계를 보고 있는 게스트들은 메시지로 수신되는 패들과 공의 정보를 지속적으로 갱신하며, 패들에 부딪히기 전까지의 공 변화만 엔진으로 돌린다.
상대 플레이어가 게임중에 나갔음을 me가 수신하면 현재 게임 상황을 서버에 API로 보고한 후 구독을 해제, 이전 페이지로 돌아간다.
게임이 정상적으로 종료되었다면 승리한 유저가 게임 상황을 API로 보고한다.
한쪽 플레이어가 게임중에 나가거나 정상적으로 게임이 종료되었음을 수신하면, 승자가 보고한 최종 종료 상태를 뷰에 업데이트한 후 구독을 해제, 이전 페이지로 돌아간다.
War - 액티브
War가 progress 상태인 동안 양 진영 길드원 모두가 같은
room
을 구독한다.Status
게임이 끝날 때 마다
war point
가 갱신된다.우리 길드가
war match
를 미응답하면 미응답 수를 업데이트한다.
Battle
war time
이 아님대충 아무거나 뜬다.
war time
인데 대전신청이 이뤄지지 않고 있음대전 하기
버튼이 뜬다.
war time
인데 상대방 길드가 대전신청함대전 수락
버튼로 업데이트 된다.수락 가능 시간이 얼마나 남았는지 표시된다.
war time
인데 우리 길드원이 대전 신청함 (아직 상대 길드가 받아들이지 않음)우리 길드의 누군가가 전투를 준비하고 있습니다
가 뜬다.
war time
이고 대전중임중계 참여
버튼이 뜬다.
상태가 변경됨을 수신하면 그에 맞게 뷰를 업데이트한다.
대전 기록
게임이 끝날 때마다
대전기록
이 갱신된다.
전쟁 종료시
페이지를 보고 있는 상태에서 전쟁 종료를 수신할 경우 그에 맞게 뷰를 업데이트하고 구독을 해제한다.
Last updated