본문 바로가기
프로젝트

24/10/07 - [개인] 점핑 액션 게임(8): 서버와 클라이언트 연결 확인

by Jini_Lamp 2024. 10. 7.

다음 스테이지로 넘어갈 때, 플레이어가 지금까지 거쳐온 스테이지를 저장한 배열값이 제대로 전달되지 않은 것을 확인했다.

 

이렇게 될 경우, 추후 획득한 점수를 검증할 때 제대로 된 검증을 할 수 없다.

하여, 왜 이런 문제가 발생하는지 디버깅을 통해 확인했고, 아래 이미지처럼 플레이어의 UUID가 제대로 전달되지 않아 발생하는 문제임을 확인할 수 있었다.

 

이런 문제가 생기는 이유는, 서버와 클라이언트가 제대로 연결되기도 전에 게임이 실행되어 발생하는건데, 위 이미지처럼 sendEvent 다음으로 connetion_Client가 실행된 것을 볼 수 있다.

 

해당 문제를 해결하기 위해서는 무조건 서버와 클라이언트가 연결된 후에 게임이 실행되어야 한다.

따라서 게임을 실행할 때, 연결이 제대로 되어 있는지 확인하는 코드를 index.js 파일에 추가했다.

let isConnected = false;
function reset() {
  if (!isConnected) {
    console.log('소켓 연결이 완료되지 않았습니다. 게임을 시작할 수 없습니다.');
    return;
  }
  // 중략
}

// 중략
// 연결이 완료되었을 때만 게임이 시작되도록 이벤트 리스너 추가
socket.on('connect', () => {
  console.log('소켓 연결 완료');
  isConnected = true;

  // 소켓 연결 후에만 reset 이벤트 리스너 추가
  window.addEventListener('keyup', reset, { once: true });
});