한판 한 뒤 끝내면 서버 에러
socket.id = 게임 세션 ID (애당초 socket.id에 무언갈 담으려한 우리의 잘못 나중에 코드 보고 놀란 우리 모두들)
게임 세션 id를 가지고 있는 경우에 onEnd 이벤트가 발생하면 상태동기화를 해제하고 게임세션을 제거하려고함. -> 이 기능이 오류남.
게임을 한판 한 경우 게임 세션 ID가 남아 있어 상태동기화 해제 및 게임세션 제거 동작을 하기 때문에 오류가 발생.
endGame.handler.js에서 게임이 끝났을 때 소켓에 저장된 세션ID를 없애려고했음.
socket.id = null; // 세션ID 초기화
endGame.handler.js에서 게임이 끝났을 때 소켓에 저장된 세션ID를 없애려고했음, 하지만 클라이언트에게 특별히 응답을 주는 내용이 없기 때문에 갱신이 안됨.
onEnd 이벤트
// 게임 한판 한뒤 종료하는 경우: socket.id가 이미 있음으로.
const gameSession = getGameSession(socket.id);
if (!gameSession) {
console.log('클라이언트 연결이 종료되었습니다.');
return;
}
따라서 onEnd 이벤트에서 대응하기로함.
여기서 문제는 socket.id를 우리 마음대로 무언가를 넣거나 제거하거나 하니까 만약 socket을 저장해두는 형식이라면 나중에 내 socket이랑 비교할때 당연히 false만 뜬다. 이건 먼 훗날 우리가 겪어버린 문제... 따라서 다른 곳에 저장해서 사용하는 방식으로 했습니다.
'TIL' 카테고리의 다른 글
자원 전쟁 프로젝트 ProtoBuf 구분 기준 (1) | 2024.11.15 |
---|---|
Tower Defense Online Project 트러블 슈팅 - 5 (1) | 2024.11.12 |
Tower Defense Online Project 트러블 슈팅 - 3 (0) | 2024.11.12 |
Tower Defense Online Project 트러블 슈팅 - 2 (0) | 2024.11.12 |
Tower Defense Online Project 트러블 슈팅 - 1 (0) | 2024.11.12 |