모든 룸에 대한 데이터가 필요해서 열심히 코드를 짜봤지만
생성된 룸이 다른 클라이언트에서 안 보여서 여기저기 질문을 했다
@WebSocketServer() server: Server;
@SubscribeMessage('enterLive')
enterChatRoom(@MessageBody() data, @ConnectedSocket() socket: Socket) {
console.log('채팅방 만들기 전', socket.rooms);
socket.join(data.data);
console.log('채팅방 만들어졌나', socket.rooms);
}
@SubscribeMessage('allRooms')
allRooms(@ConnectedSocket() socket: Socket) {
console.log('모든 방 불러오기', socket.rooms);
}
handleConnection(client: Socket, ...args: any[]) {
console.log(`연결 : ${client.id}`);
}
handleDisconnect(client: Socket) {
console.log(`연결 끊김: ${client.id}`);
}
클라이언트 1번과 2번이 접속하고
1번이 새로운 '아무말'이라는 룸을 만들고 확인했을때는
정상적으로 룸이 출력되었으나
2번이 새로고침으로 들어왔을때 1번의 룸을 찾을 수 없었다
//1,2 접속
연결 : FQyooCek6DYPyraEAAAC
연결 : uKKQ7YoOGTrKtSiVAAAD
모든 방 불러오기 Set(1) { 'FQyooCek6DYPyraEAAAC' }
모든 방 불러오기 Set(1) { 'uKKQ7YoOGTrKtSiVAAAD' }
//1번이 채팅방 만듦
채팅방 만들기 전 Set(1) { 'uKKQ7YoOGTrKtSiVAAAD' }
채팅방 만들어졌나 Set(2) { 'uKKQ7YoOGTrKtSiVAAAD', '아무말' }
//2번 재접속
연결 끊김: FQyooCek6DYPyraEAAAC
연결 : syPuZFWp-uc_emxgAAAF
모든 방 불러오기 Set(1) { 'syPuZFWp-uc_emxgAAAF' }
socket에 대한 이해 부족으로
socket은 애초에 user하나를 뜻하는 것이였다
모든 유저의 룸을 불러오고 싶으면 server를 사용했어야했다
@WebSocketServer() server: Server;
@SubscribeMessage('enterLive')
enterChatRoom(@MessageBody() data, @ConnectedSocket() socket: Socket) {
console.log('채팅방 만들기 전', socket.rooms);
socket.join(data.data);
console.log('채팅방 만들어졌나', socket.rooms);
}
@SubscribeMessage('allRooms')
allRooms(@ConnectedSocket() socket: Socket) {
console.log('모든 방 불러오기', this.server.of('/').adapter.rooms);
}
afterInit(server: Server) {
console.log('웹소켓 서버 초기화 ✅');
}
handleConnection(client: Socket, ...args: any[]) {
console.log(`연결 : ${client.id}`);
}
handleDisconnect(client: Socket) {
console.log(`연결 끊김: ${client.id}`);
}
this.server.of('/').adapter.rooms
를 사용해서 해결했다
server는 말그대로 서버이다 of는 네임스페이스로 아무것도 적지않았다면 기본값인 '/'를 쓴다
//1,2번 연결
연결 : zlSr2gBBxT5wZWTaAAAC
연결 : WJfRlgaTTklvZo4yAAAD
모든 방 불러오기 Map(2) {
'zlSr2gBBxT5wZWTaAAAC' => Set(1) { 'zlSr2gBBxT5wZWTaAAAC' },
'WJfRlgaTTklvZo4yAAAD' => Set(1) { 'WJfRlgaTTklvZo4yAAAD' }
}
모든 방 불러오기 Map(2) {
'zlSr2gBBxT5wZWTaAAAC' => Set(1) { 'zlSr2gBBxT5wZWTaAAAC' },
'WJfRlgaTTklvZo4yAAAD' => Set(1) { 'WJfRlgaTTklvZo4yAAAD' }
}
//1번 채팅방 만들기
채팅방 만들기 전 Set(1) { 'WJfRlgaTTklvZo4yAAAD' }
채팅방 만들어졌나 Set(2) { 'WJfRlgaTTklvZo4yAAAD', '아무말' }
//2번 재접속
연결 끊김: zlSr2gBBxT5wZWTaAAAC
연결 : 2PQX6BZ9qI_zhE4SAAAF
모든 방 불러오기 Map(3) {
'WJfRlgaTTklvZo4yAAAD' => Set(1) { 'WJfRlgaTTklvZo4yAAAD' },
'아무말' => Set(1) { 'WJfRlgaTTklvZo4yAAAD' },
'2PQX6BZ9qI_zhE4SAAAF' => Set(1) { '2PQX6BZ9qI_zhE4SAAAF' }
}
socket의 개념에 대해 더 공부해야겠다..