34 lines
1.4 KiB
JavaScript

const { logger } = require('../../utils/logger');
module.exports = function(io, socket, gameState) {
// 방 나가기 이벤트
socket.on('leaveRoom', function(roomData) {
try {
const roomId = roomData.roomId;
socket.leave(roomId);
socket.emit('exitRoom',{message: "방을 떠났습니다."});
socket.to(roomId).emit('endGame', { message: "상대방이 방을 떠났습니다." });
// 혼자 대기 중인 경우 대기방 목록에서 제거
gameState.rooms = gameState.rooms.filter(room => room.roomId !== roomId);
// 타임아웃이 있으면 제거
if (gameState.matchingTimeouts.has(socket.id)) {
clearTimeout(gameState.matchingTimeouts.get(socket.id));
gameState.matchingTimeouts.delete(socket.id);
}
// 매핑 정보 삭제
gameState.socketRooms.delete(socket.id);
gameState.playerRating.delete(socket.id);
gameState.nickname.delete(socket.id);
gameState.imageIndex.delete(socket.id);
logger.info(`방 나가기 처리: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch (err) {
logger.error(`방 나가기 처리 중 오류: ${err}`);
socket.emit('error', { message: "방 나가기 처리 중 오류가 발생했습니다." });
}
});
};