Skip to content

투표 대상자 지정 오류

simjaesung edited this page Dec 1, 2024 · 1 revision

문제

다음 사진과 같이 투표 시간에 특정 플레이어만 투표 대상자로 지정되는 오류가 있었습니다.

image

환경

운영체제, 브라우저, 의존성 목록 등

  • Windows 11
  • Chrome
  • Next.js v15.0.2

설명

게임이 시작된 후 1차 투표와 최종 투표 시간이 되었을 때, 서버로부터 전달 받은 투표 대상자 목록에 따라 투표 대상자가 지정되어야 하지만 투표 대상자가 정확하게 지정되지 않는 상황입니다.


해결 과정

문제 해결 과정을 기록합니다.

image

위의 사진에 따라 서버에서는 정확하게 투표 대상자 정보를 전달하고 있으므로, 프론트 문제라고 파악하였습니다. 따라서 isCandidate 라는 상태 정보를 변경하는 부분에서 데이터가 정확하게 전달되는지 확인하였습니다.


해결

해결책을 기록합니다.

image

확인 결과, 서버로부터 받은 투표 대상자 정보를 담고 있는 문자열 배열을 순회할 때 for-of 를 사용해서 nickname을 사용해야 했지만, for-in 을 사용하면서 index를 사용했기 때문에 발생한 문제였습니다. 따라서 다음과 같이 for-infor-of 로 수정하면서 문제를 해결하였습니다.

// 투표 시작 시 투표 대상 후보자 설정
socket?.on('send-vote-candidates', (candidates: string[]) => {
  initializeVotes();
  setInvalidityCount(0);
  setTarget(null);

  **for** (const nickname **of** candidates) {
    if (nickname === gamePublisher.nickname) {
      changePublisherStatus({ isCandidate: true });
    } else {
      changeSubscriberStatus(nickname, { isCandidate: true });
    }
  }
});

MafiaCamp

📔소개
🎯프로젝트 규칙
💻프로젝트 기획
🍀기술 스택
📚그룹 회고
🌈개발 일지
🍀문제 해결 경험
🔧트러블 슈팅
Clone this wiki locally