### 1-2. `leaveRoom` 이벤트 메세지 수정
```javascript
socket.on('leaveRoom', async (roomNum, nickname) => {
await RoomProvider.leaveRoom(roomNum);
//const leaveRoom = await RoomProvider.getRoom(roomNum);
const currentCount = await RoomProvider.getCurrentCount(roomNum);
socket.roomNum = null; // 여기서 socket.roomNum을 null 로 바꾼 후에 밑에 emit 하는 곳에서,
if (currentCount > 0 && currentCount < 9) {
await RoomProvider.decMember(roomNum, nickname);
const currentMember = await RoomProvider.getCurrentMember(roomNum);
const getAllRoom = await RoomProvider.getAllRoom();
socket.emit('leaveRoom' /*, leaveRoom*/);
lobby.sockets.emit('showRoom', getAllRoom);
lobby.to(`/gameRoom${socket.roomNum}`).emit('userNickname', currentMember); // null 을 이용해서 emit을 하고있어서 프론트에서 계속 못받고 있었습니다.
} else if (currentCount <= 0) {
console.log('방이 삭제 되었습니다.');
await RoomProvider.deleteRoom(roomNum);
const getAllRoom = await RoomProvider.getAllRoom();
socket.emit('leaveRoom');
lobby.sockets.emit('showRoom', getAllRoom);
}
});
2. room-provider.js 수정
2-1. room-provider.js 에서 createRoom 메소드 수정.
// 기존 코드
createRoom = async (gameMode, roomTitle, nickname) => {
const createRoom = await RoomRepo.createRoom(gameMode, roomTitle, nickname);
const roomNum = await RoomRepo.getRoomNum(nickname); // createRoom._id 로 roomNum 역할을 대신해서 삭제했습니다.
await redis.lpush(`currentMember${await RoomRepo.getRoomNum(nickname)}`, nickname); // incMember 라는 메소드에서 rpush로 닉네임을 추가하고 있어서 같은 순서로 push 하게 끔 수정했습니다. 백틱안에 GameRepo 에서 가져오는 것 대신 createRoom._id로 roomNum을 대체했습니다.
await redis.set(`ready${roomNum}`, 0);
await redis.set(`readyStatus${await RoomRepo.getRoomNum(nickname)}`, ''); // 백틱안에 내용을 위에와 같은 이유로 createRoom._id로 대체했습니다.
return createRoom;
};
// 수정 내용
createRoom = async (gameMode, roomTitle, nickname) => {
const createRoom = await RoomRepo.createRoom(gameMode, roomTitle, nickname);
await redis.rpush(`currentMember${createRoom._id}`, nickname);
await redis.set(`ready${createRoom._id}`, 0);
await redis.set(`readyStatus${createRoom._id}`, '');
return createRoom;
};
2-2. decMember 메소드 내용 수정.
decMember = async (roomNum, nickname) => {
await redis.lrem(`currentMember${roomNum}`, 1, nickname);
let currentMember = await redis.lrange(`currentMember${roomNum}`, 0, -1); // 밑에랑 같은 이유로 삭제했습니다.
return currentMember; // 여기서 하는 return 값을 앞에서 받지를 않고 멤버 명단을 가져오는 로직이 따로 있기 때문에 삭제했습니다.
};
3. .eslintrc 내용 수정.
"plugins": ["prettier", "jest"] // jest 추가
4. package.json 내용 수정.
라이브러리가 추가됬습니다. eslint-plugin-jest 를 추가 설치했어서 pull 받을 때 npm install 한번 진행해야 합니다.
script 부분에 "coverage": "jest --coverage" 구문이 추가됬습니다. 윤진님 테스트 코드 작성 때 필요하다고 합니다.
수정 내용
// 수정 내용 socket.on('createRoom', async (gameMode, roomTitle, nickname) => { // 생성된 방 정보 객체 const roomData = await RoomProvider.createRoom(gameMode, roomTitle, nickname);
2.
room-provider.js
수정2-1.
room-provider.js
에서createRoom
메소드 수정.2-2.
decMember
메소드 내용 수정.3.
.eslintrc
내용 수정.4.
package.json
내용 수정.eslint-plugin-jest
를 추가 설치했어서 pull 받을 때 npm install 한번 진행해야 합니다.script
부분에"coverage": "jest --coverage"
구문이 추가됬습니다. 윤진님 테스트 코드 작성 때 필요하다고 합니다.