[WIL] 항해99 12주차 (84일차) 실전프로젝트 트러블슈팅

돼지·2022년 4월 3일
1

항해99

목록 보기
89/104

🛠 트러블 슈팅

게임 결과 페이지 관련 오류

😥 에러 내용 : 게임이 끝나게 되면 history.replace('/result')을 적용 했는데 이동 안됨

  • 해당 이동api에는 게임정보를 삭제시키는 api가 백엔드 코드에 들어있음
  • 다수의 요청을 하게되면 db에 영향을 끼칠수 있어 방장만 요청하기로 코드작성
  • history.replace('/result') = > history.replace('/result/roomId')로 변경
  • 방장만 해당페이지로 이동하고 남은사람들은 이동하지 않는 에러 발생

😄 문제 해결방법

해결방법1

api로 승자 명단을 보내지 말고 소켓io로 승자명단 보내서 받아보기

  • 값을 정상적으로 받아지나 다른인원들은 이동하지 않는건 동일

해결 방법2

결과페이지가 아닌 메인페이지에서 Switch case 문을 사용하여 페이지 이동 시도

  • 스위치 케이스문에 이동하는 함수를 작성해 두었지만 동일현상 발생

해결방법3

결과페이지 이동이 아닌 결과페이지를 모달화 하자는 의견

  • 해당 페이지 내용을 모달화 해서 메인(게임)페이지에 작성
  • 결과는 무한루프에 빠지게 됨
  • 원인 => 우리 게임은 결과 값을 계산하고 요청 후 받아오지만 게임을 멈추는 코드는 없음 그러므로 무한루프

해결방법4

다시 메인페이지에서 결과페이지로 이동 조건 단, 스테이터스 값을 소켓으로 요청하기

  • 소켓으로 스테이터스를 특정 값으로 요청하면 실행되는 함수(history.replace('/result/roomId')를 작성
  • 이렇게 실행했더니 방장 제외 전원 이동
  • 확인해보니 여러 시도 중 방장은 api 요청 후 이동 코드를 주석처리
  • 주석 해제 후 시도하니 해결 완료

🛠 트러블 슈팅 2

😥 에러내용2 : 위의 방법이 해결은 됐으나 모든 인원이 값을 불러오지 않은 문제 발생

  • 예상 원인 : 백엔드에서 게임 정보를 결과페이지로 이동할 때 삭제처리 하게 됨
  • 그렇게 되면 방장만 값을 불러와서 뷰에 적용하고 나머지 인원들은 값을 불러오지 못하게 되며 값이 없으니 타입에러 발생

😄 문제 해결방법

해결방법1

소켓으로 실시간 값을 불러오도록 시도

  • 시도는 했으나 위와 동일현상 발생

해결방법2

기존코드는 최대한 건들이지 않고 진행하고 싶었지만 삭제하는 요청을 다른타이밍에 넣는것 요청

  • 결과페이지 이동시 게임데이터 삭제가 아닌 이동 후 setTimeout으로 5초이후에 삭제요청api가 가도록 시도
  • 해당방법으로 해결 완료


게임 결과에 따라 승리자들 명단만 노출시킴
(gif파일은 개인화면이지만 승패자 모두 결과페이지로 이동완료)

😎 회고

그디어 모든 기능이 끝났다.

남들과는 다른 프로젝트를 하겠다는 생각들로 모여

마피아 게임을 만드는 프로젝트는 생각보다 어렵고 잘 해결되지 않았다.

게임 로직부터 실시간 영상통화 그리고 짜잘한 기능들이 너무 어려웠다.

불과 한달전만 해도 완성은 할 수 있을까 했는데

결국 해낸게 너무 신기할 따름이다.

이번 프로젝트에 내 기여도는 굉장히 낮다고 생각이 들지만
그래도 코드가 어떻게 돌아가는지 이해가 되고 내가 직접 관여하지 않은 부분은 팀원들과 코드리뷰로 서로 알아가기로 했다.

하지만 이제 시작이라는 생각이드는게

배포는 했지만 버그가 있고 버그를 해결해야하는 시간이 며칠 안남긴했다.

추가로 이런 기능뿐만 아니라 현업에는 더 어려운 일들이 많을텐데 우리가 만든 작은 프로젝트에도 이런 힘듦이 많았는데 현업에는 얼마나 더 많은지 기대반 걱정반이다.

profile
먐미

0개의 댓글

관련 채용 정보