전체 글 81

Tower Defense Online Project 트러블 슈팅 - 3

상대 게임 탈주시 상태동기화 인터벌이 날뛰는 문제user 클래스 안에서 intervalManager가 상태동기화를 일정 주기로 관리해주고 있음.현재 onEnd 이벤트에서 누군가 한명이 꺼지면 게임세션을 날려버림.그래서 남은 사람 intervalManager가 혼자 갈길을 잃은 것. 수정 전 onEnd 이벤트 한 명만 나가도 게임세션이 삭제됨.export const onEnd = (socket) => async () => { await removeUser(socket); // 매칭 돌려 유저 세션에 등록된 경우 유저 세션에서 제거 if (socket.id && ) { removeGameSession(socket.id); } else { } console.log('클라이언트 연결이 종료되었습니..

TIL 2024.11.12

Tower Defense Online Project 트러블 슈팅 - 2

MySQL, Redis가 연결이 안된 경우 계속 시도하는 문제레디스의 경우 연결이 실패한 경우 계속해서 연결 시도를 반복함.이 과정에서 무의미하게 로그가 계속해서 쌓임.DB연결에 실패한 경우 서버가 종료되도록 수정함. 해결 코드import dbPool from '../../db/database.js';import { config } from '../../config/config.js';export const testConnection = async () => { try { const [rows] = await dbPool.query('SELECT 1 + 1 AS solution'); console.log(`${config.database.database} 테스트 쿼리 결과:`, rows[0]..

TIL 2024.11.12

Tower Defense Online Project 트러블 슈팅 - 1

이상한 페이로드 출력  id를 꺼낸 경우C2SRegisterRequest { id: '\n\x04asdf\x12\x04asdf\x1A\x04asdf' } 제대로 파싱을 하지 못하는 에러가 발생함. test codeconsole.log("패킷 타입 : "+packetType) console.log("페이로드 길이 : "+payloadLength) switch (packetType) { case PACKET_TYPE.REGISTER_REQUEST: { const protoMessages = getProtoMessages(); const Register = protoMessages.common.C2SRegisterRequest; ..

TIL 2024.11.12