• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

socket onDisconnect 질문

22.04.05 15:25 작성 조회수 121

0

nestjs Gateway 클래스에서 handleDisconnect할때 socket.rooms 하면 텅 비어있는 Set이 나오더라구요.

async handleDisconnect(@ConnectedSocket() socket: Socket) {
const joinRooms = socket.rooms;
const UserId = socket.data.UserId;

console.log('socket disconnected');
console.log(UserId);
console.log(socket.rooms);
console.log(socket.connected);
for (let room of joinRooms) {
if (!room.includes('room')) continue;
const RoomId = room.split(':')[1];
this.redis.srem(`inRoom:${RoomId}:users`, UserId);
}
this.redis.srem('online:users', UserId);
}

위처럼 연결이 끊어질시에 레디스 상태를 수정하려고하는데, socket.rooms가 텅 비어져있습니다.

저기서 connect할때 넣어준 socket.data.UserId는 살아있는데 말이죠.
원래 이렇게 nestjs단에서 끊어버리는건지 궁금합니다. 그렇다면 따로 disconnect이벤트를 만들어서 emit해줘야하는걸까요? 

답변 1

답변을 작성해보세요.

0

네스트단이 아니라 socket.io단에서 연결이 끊겼으므로 자동으로 room에서 제거한 것 같습니다.