TIL 84. 2024-04-30

이준구·2024년 5월 18일
0

TIL 순서

목록 보기
84/119
post-thumbnail

Ice Craft 팀 프로젝트의 대대적인 socket IO 메서드 개편 2편


1. Event명 변경 및 통합


기존 어색한 부분

  • Modal 관련 Event명: 접미사 부분에 “Modal” 이라는 단어로 끝나는 걸 볼 수 있다.

ex) showModal, showCitizenModal

이유

  • 위의 Event를 제외하고도 “Modal” 관련된 Event가 다수 존재

ex) showVoteResult, showVoteDeadOrLive, showDeadUser, victoryUser

생각한 방법

  • “showModal”을 제외한 event Name의 접미사에 “Modal” 제거
  • “showCitizenModal” ⇒ “showCitizen”으로 변경

2. 최후의 투표


기존 어색한 부분

  • 시나리오 순서)
    1. [UI(모든 유저) : 찬성/반대 투표를 해주세요.] : showModal // 메세지 / 3초**
  • **2. 투표 중 : inVote // 10초 (최후의 투표)

이유

  • 최후의 투표는 캠 클릭 이벤트가 아닌 클라이언트 측에서 갖고있는 “YES/ No 모달창”으로 구성

자세한 이유

  • 앞) 시나리오 로직에서 일반 투표의 ”InVote” 기능은 캠 클릭 이벤트 활성화 및 타이머 기능을 제공
  • 현) 시나리오 로직에서 최후 투표의 “inVote” 기능은 캠 클릭이 아닌 “Yes/ NO 모달창”으로 구성

생각한 방법

  • 두개의 Event를 “showModal”로 합치기
  • 구성 요소: Event명, 메세지, timer(number)

참고 사항

  • 이후 진행되는 “voteYesOrNo” Event에 필요한 userId 값은 이전의 “showVoteResult”(투표 결과)에서 userId값을 리스트로 전달 받기 때문에 userId 값이 필요없다.
  • 최후의 투표 모달창 로직: 한 번 클릭 시 서버에 값 전달후 투표 버튼 비활성화 ==> “투표 중입니다” 라는 문구로 변경


3. userMediaStatus 수정


기존 어색한 부분

  • “마피아 유저들의 컴퓨터에는 마피아 유저들의 카메라 킴”
  • “ A 유저 카메라 및 마이크 켬(최후 변론)”

이유

  • useMediaStatus” 에서 구성 요소 중 위의 2곳에서만 timer가 존재하며, 다른 곳에서는 필요 x
  • 가독성 및 통일성있는 로직을 위해 “userMediaStatus” Event에서는 카메라, 마이크 제어 기능만 구성
  • 구성 요소: Event명, userIdList[ ], 카메라(boolean), 마이크(boolean)

생각한 방법

  • “useMediaStatus”에서 timer 기능을 갖고 있는 Logic

1) 마피아 user끼리 서로 확인 중 : 5초

2) A 유저 카메라 및 마이크 켬(최후 변론): 10초

  • 기존 Timer 기능만 갖고 있는 시나리오 Logic

1) 토론 중: inDiscuss // 60초

결과

  • 위의 Logic 2개를 합쳐 하나의 socket Event로 생성

1) “inTimer” 구성요소: Event명, Timer(number)



4. 캠 클릭 이벤트 및 직업 별 이벤트 수정


기존 어색한 부분

  • 투표 중 : inVote // 10초
  • 최후의 투표 중 : inVote // 10초
  • 마피아 선택 중 : inSelect // 10초
  • 의사 선택 중: inSelect // 10초
  • 경찰 선택 중: inSelect // 10초

이유

  • 위의 5가지 Event의 공통 기능: 캠 클릭 이벤트 활성화, 비활성화 및 timer 기능을 담당

생각한 방법

  • 가독성 및 통일성있는 로직을 위해 “userCamClickStatus” 새로운 socket Event 생성
  • 구성 요소: Event명, message, timer

참고 사항

  • message가 필요한 이유

직업별 클릭 이벤트의 비활성화 타이밍이 다르기 때문이다.

  • 마피아 시간 : 주어진 시간동안 계속 클릭이벤트 활성화
  • 의사 시간 : 주어진 시간동안 계속 클릭이벤트 활성화
  • 경찰 시간 : 주어진 시간동안 한 번만 클릭이벤트 활성화

팀 프로젝트의 대대적인 socket IO 메서드 개편 1편
socket IO 정의

profile
개발 중~~~ 내 자신도 발전 중😂🤣

0개의 댓글

관련 채용 정보