33 lines
1.3 KiB
JavaScript
33 lines
1.3 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);
|
|
|
|
logger.info(`방 나가기 처리: 플레이어 ${socket.id}, 방 ${roomId}`);
|
|
} catch (err) {
|
|
logger.error(`방 나가기 처리 중 오류: ${err}`);
|
|
socket.emit('error', { message: "방 나가기 처리 중 오류가 발생했습니다." });
|
|
}
|
|
});
|
|
}; |