DO-49 이전 커밋에서 누락된 항목 추가
This commit is contained in:
parent
072876bbf0
commit
886cb4f08c
4
app.js
4
app.js
@ -49,9 +49,9 @@ async function connectDB(){
|
||||
// 연결 종료 처리
|
||||
process.on("SIGINT", async ()=> {
|
||||
await client.close();
|
||||
console.log("Database Connected");
|
||||
console.log("Database Disconnected");
|
||||
process.exit(0);
|
||||
})
|
||||
});
|
||||
} catch (err){
|
||||
console.error("DB 연결 실패: " + err);
|
||||
process.exit(1);
|
||||
|
@ -5,12 +5,14 @@ module.exports = function(io, socket, gameState) {
|
||||
socket.on('registerPlayer', function(data) {
|
||||
try {
|
||||
const rating = data.rating;
|
||||
const nickname = data.nickname;
|
||||
gameState.playerRating.set(socket.id, rating);
|
||||
gameState.nickname.set(socket.id, nickname);
|
||||
|
||||
logger.info(`플레이어 등록: ID ${socket.id}, 급수 ${rating}`);
|
||||
logger.info(`플레이어 등록: ID ${socket.id}, 닉네임: ${nickname}, 급수 ${rating}`);
|
||||
|
||||
// 급수에 따른 매칭 진행
|
||||
findMatch(socket, rating);
|
||||
findMatch(socket, rating, nickname);
|
||||
|
||||
} catch (err) {
|
||||
logger.error(`플레이어 등록 중 오류: ${err}`);
|
||||
@ -18,7 +20,7 @@ module.exports = function(io, socket, gameState) {
|
||||
}
|
||||
});
|
||||
|
||||
const findMatch = (socket, playerRating) => {
|
||||
const findMatch = (socket, playerRating, nickname) => {
|
||||
let matchedRoom = null;
|
||||
|
||||
// 1. 같은 급수의 방 찾기
|
||||
@ -44,19 +46,22 @@ module.exports = function(io, socket, gameState) {
|
||||
// 클라이언트에게 방 정보 전송 (상대 급수 정보 포함)
|
||||
socket.emit('joinRoom', {
|
||||
roomId: roomId,
|
||||
opponentRating: gameState.playerRating.get(matchedRoom.hostId)
|
||||
opponentRating: gameState.playerRating.get(matchedRoom.hostId),
|
||||
opponentNickname: gameState.nickname.get(matchedRoom.hostId),
|
||||
});
|
||||
|
||||
// 상대방에게 게임 시작 알림 (내 급수 정보 포함)
|
||||
// 상대방에게 게임 시작 알림 (내 닉네임과 급수 정보 포함)
|
||||
socket.to(roomId).emit('startGame', {
|
||||
opponentId: socket.id,
|
||||
opponentRating: playerRating
|
||||
opponentRating: playerRating,
|
||||
opponentNickname: nickname,
|
||||
});
|
||||
|
||||
logger.info(`매칭 성공: ${socket.id}(${playerRating}급) - ${matchedRoom.hostId}(${gameState.playerRating.get(matchedRoom.hostId)}급)`);
|
||||
} else { // 4. 매칭된 방이 없으면 새 방 생성
|
||||
}
|
||||
// 4. 매칭된 방이 없으면 새 방 생성
|
||||
else {
|
||||
|
||||
logger.info("매칭된 방 없음!")
|
||||
const roomId = uuidv4();
|
||||
socket.join(roomId);
|
||||
|
||||
|
@ -7,8 +7,8 @@ module.exports = function(io, socket, gameState) {
|
||||
const roomId = roomData.roomId;
|
||||
|
||||
socket.leave(roomId);
|
||||
socket.emit('exitRoom');
|
||||
socket.to(roomId).emit('endGame');
|
||||
socket.emit('exitRoom',{message: "방을 떠났습니다."});
|
||||
socket.to(roomId).emit('endGame', { message: "상대방이 방을 떠났습니다." });
|
||||
|
||||
// 대기방 목록에서 제거
|
||||
gameState.rooms = gameState.rooms.filter(room => room.roomId !== roomId);
|
||||
|
@ -8,7 +8,8 @@ const { logger } = require('../utils/logger');
|
||||
const gameState = {
|
||||
rooms: [], // {roomId, hostId, rating} 형태로 저장
|
||||
socketRooms: new Map(), // 소켓ID와 방ID 매핑
|
||||
playerRating: new Map() // 소켓ID와 플레이어 급수 매핑
|
||||
playerRating: new Map(), // 소켓ID와 플레이어 급수 매핑
|
||||
nickname: new Map() // 플레이어 닉네임
|
||||
};
|
||||
|
||||
module.exports = function(server) {
|
||||
@ -19,21 +20,6 @@ module.exports = function(server) {
|
||||
io.on('connection', function(socket) {
|
||||
console.log('Connected: ' + socket.id);
|
||||
|
||||
// 기존 단순 매칭 코드
|
||||
// if (rooms.length > 0) {
|
||||
// var roomId = rooms.shift();
|
||||
// socket.join(roomId)
|
||||
// socket.emit('joinRoom', { roomId: roomId });
|
||||
// socket.to(roomId).emit('startGame', { roomId: socket.id });
|
||||
// socketRooms.set(socket.id, roomId);
|
||||
// } else {
|
||||
// var roomId = uuidv4();
|
||||
// socket.join(roomId);
|
||||
// socket.emit('createRoom', { room: roomId });
|
||||
// rooms.push(roomId);
|
||||
// socketRooms.set(socket.id, roomId);
|
||||
// }
|
||||
|
||||
// 매칭 관련 이벤트 핸들러 등록
|
||||
matchmakingHandlers(io, socket, gameState)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user