Closed ghost closed 1 year ago
const msgId = new Date().getTime().toString(36);
socket.broadcast.in(`/gameRoom${roomNum}`).emit('receiveRoomMsg', { notice: msg }, msgId);
socket.on('leaveRoomMsg', (roomNum, nickname) => { console.log(`${nickname} ${roomNum}번 방 퇴장`); const msg = `${nickname} 님이 퇴장하셨습니다.`; const msgId = new Date().getTime().toString(36); // 방법1 // socket.to(`/gameRoom${roomNum}`).emit('receiveRoomMsg', { notice: msg }, msgId); // 방법2 // chat.to(`/gameRoom${roomNum}`).emit('receiveRoomMsg', { notice: msg }, msgId); // 방법3 // chat.in(`/gameRoom${roomNum}`).emit('receiveRoomMsg', { notice: msg }, msgId); // 방법4 // socket.broadcast.to(`/gameRoom${roomNum}`).emit('receiveRoomMsg', { notice: msg }, msgId); // 방법5 socket.broadcast.in(`/gameRoom${roomNum}`).emit('receiveRoomMsg', { notice: msg }, msgId); });
user-error-handler.js : 에러 처리
const errorHandler = (error, req, res) => { let statusCode; switch (error.name) { case 'UserError': statusCode = error.statusCode; res.status(statusCode).json({ errorMessage: error.message, }); break; case 'GameError': break; default: res.json({ errorMessage: error.message }); break; } };
// 좀 더 에러를 세분화 하려면 에러 클래스 생성해서 추가
class CustomError extends Error { constructor(message, statusCode = 500) { super(message);
this.message = message; this.statusCode = statusCode; }
}
// User 디렉토리에서 사용하는 에러 class UserError extends Error { constructor(message, statusCode = 500) { super(message);
this.name = UserError; this.message = message; this.statusCode = statusCode; }
module.exports = { CustomError, UserError, };
- wrap-async.js : user 디렉토리의 모든 Route에 대해 에러 받아서 에러 핸들러로 전달하는 함수 ### 5. 테스트 코드 작성할 파일 추가 (진행중)
잘못 올라간 코드 삭제 후 다시 PR 예정
1. 로그인 부분 3계층 아키텍처 적용
2. 룸 퇴장 / 룸 안에서 비정상적 연결해제 시 퇴장메세지 에밋 이벤트 수정
3. chat-socket.js 의 룸채팅 메세지 이벤트들에서 receiveRoomMsg emit 하는 방법 계속 추가해보고 테스트 하는 중
4. 에러 핸들 관련 파일 추가
user-error-handler.js : 에러 처리
class CustomError extends Error { constructor(message, statusCode = 500) { super(message);
}
// User 디렉토리에서 사용하는 에러 class UserError extends Error { constructor(message, statusCode = 500) { super(message);
}
module.exports = { CustomError, UserError, };