강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

노른자님의 프로필 이미지
노른자

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

socket onDisconnect 질문

작성

·

212

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에서 제거한 것 같습니다.

노른자님의 프로필 이미지
노른자

작성한 질문수

질문하기