질문이요
192
작성한 질문수 92
방에들어가는 라우터에서요,
이것을 통해서, 인원수를 구하잖아요.
정확히 adpater 가 무엇이고 어떻게 동작하는지 모르겠어요
설명 좀 부탁드려요.
그리고,
제가 다른 종류 브라우저 말고도, 그냥 크롬창 여러개 띄어도 인원수가 오르더라구요.
그래서,
이런식으로 콘솔을 찍어 보았어요.
실험 1.
방을 한개 만들고, 새창 여러개로 같은 방 한개 들어가기
console.log(rooms) 결과값 :
console.log(rooms[req.params.id]) 결과값:
이렇게 나오면, 소켓 5 개가 사용됬다는걸 알 수 있던데요.
실험 2
방 A 를 만든다( 만들면 자동으로 들어가짐)
A 의 req.params.id 는 '5d64f4aab36b762d2becb422'
console.log(rooms) 결과값 :
console.log(rooms[req.params.id]) 결과값:
새창을 하나 열어서, 방 A 로 들어간다.
console.log(rooms) 결과값 :
console.log(rooms[req.params.id]) 결과값:
새창을 또 하나 열어서, 방 A 로 들어간다.
console.log(rooms) 결과값 :
console.log(rooms[req.params.id]) 결과값:
지금 여기서 보면, 실질적으로 방 A에는 3 명의 인원이 들어가있는데 lenght 는 2로 나옵니다.
그런데 특이하게
방 B를 만들면, 방 A에 3 명이(옳은 인원수) 들어가 있다고 업데이트가 됩니다.
B 의 req.params.id 는 '5d64ecdedcd19c1e1979ad8b'
console.log(rooms) 결과값 :
console.log(rooms[req.params.id]) 결과값:
하지만, 방 B에는 인원이 1 명이 들어 있음에도 불가하고 ,
방 B의 정보는 찍히지가 않습니다.
그리고 방 B에 새창으로 들어가면, 방 B에 1 이 뜹니다.
마찬가지로, 방 A 새창으로 들어가면,
방 B에는 2명이라고 뜨고,
방 A에는 4명이 떠야하는데 3명이라 뜹니다.
이와 같이, 방에들어가면 바로 업뎃이 안되는데 이유좀 알 수있을까요???
이유 인즉슨, 5d64ecdedcd19c1e1979ad8b B의 req.params.id 값이 없고, A의 값에 소켓들이 추가 되더라구요 length 1에서 2 를 보실수 있듯이요.
제가 정확히
const { rooms } = io.of('/chat').adapter;
이게 어떤식으로 정보를 저장하는지 몰라서 그러는거같은데
설명좀 부탁드려요 .
답변 3
0
네 자동으로 추가됩니다. socket.io 라이브러리 내부에서 일어난다고 보시면 되고요.
소켓과 DB를 좀 더 적극적으로 사용하는 예제는 다음 장 경매시스템 만들기를 보시면 좋을 것 같습니다.
0
adapter.rooms 이요,
그러면 따로 설정없이, 그냥 유저가 들어가면, 자동으로 정보가 추가 되는건가요???
현재코드에서 따로 adapter 에 넣어주는 코드를 볼 수 없는거 같아서요.
0
adapter.rooms에는 그냥 그 방에 들어가 있는 소켓(소켓이 실제 사람과 1대1 대응이 되진 않습니다) 정보가 들어 있습니다. 소켓의 개수가 실제 인원과 일치할 수도, 아닐수도 있기 때문에 실제 채팅방 서비스를 하려면 회원 정보나 이런 것들을 DB에 저장해야 합니다. 지금 구현으로는 부정확할수밖에 없다고 생각하셔야 되겠습니다.
실제 서비스에서도 cluster를 사용하나요?
1
313
2
캐싱에 관하여
0
279
3
salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?
0
347
1
게시물 올리기 오류
0
408
1
캐슁 이후 로그인창
0
266
1
kakao passport 질문있습니다.
0
493
3
global객체 공유 질문드립니다.
1
417
1
서버가 죽어버리네요
0
1047
8
포링키 문제..
0
234
2
커넥션 플래시 설치문제
0
216
2
익스프레스 제너레이터? 설치문제
0
2585
6
redis 질문입니다.
0
305
1
9장 세션을 DB에 저장시 리다이렉션 오류 발생
0
874
8
프레임워크 선택에 관하여 질문이 있습니다.
0
300
3
시퀄라이즈 질문입니다 ! !
0
588
1
리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문
0
922
6
oAuth 질문입니다.
0
356
3
GCP 질문입니다.
0
366
1
Passport 모듈 로그인 구현관련
0
720
6
카카오 로그인 관련 질문입니다!!
0
606
4
스스로 해보기 10-16 nunjuncks 질문있습니다
0
499
5
제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.
0
317
2
gif채팅방 nunjucks관련 질문입니다!
0
337
3
현영님 몽고db관련 질문입니다.
0
233
3





