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

김도영님의 프로필 이미지
김도영

작성한 질문수

Node.js 교과서 - 기본부터 프로젝트 실습까지

스스로 해보기1(참여자 인원 수 표시)

참여자 1명일때 새로고침 문제

작성

·

164

0

참여자 수 표시 부분을 보다가

채팅방의 총 참여자 수가 1명일때 새로고침을 하면

최초 새로고침 시에는 참여자 수가 0 -> 1로 변환이 됩니다.

이상없습니다.

그런데 2번째 새로 고침을 하면 채팅방이 삭제되버립니다.

socket.js 의 socket.on('disconnect' .... 부분이 실행되는것 같은데..

새로고침을 하면 pug 파일의 소스에 의해 connect 가 발생하고, 그에 따라 socket.js 의 connection 이벤트에 수신되는건 알겠는데.. 

socket.on('disconenct' ... 이 부분은 어떻게 실행이 되는건가요?

disconnect 이벤트가 호출되는 부분이 어디인지...

그리고 왜 최초 새로고침은 참여자수를 0 => 1 로 수정하는데

2번째 새로고침 에는 disconnect 가 수행되어, 

if( userConut === 0 ) 에 의해 방이 삭제되어 버리는지 모르겠습니다.

조언 부탁드립니다.

답변 3

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

참여자가 0이 될 때 disconnect 이벤트가 발생해서 socket.on('disconnect')가 실행된 겁니다. 그런데 연결된 클라이언트 소켓들은 연결이 다 끊어져 브라우저로 이벤트가 전송되지 않습니다.

0

김도영님의 프로필 이미지
김도영
질문자

답변 감사합니다.

그런데 어쨋든 disconnect 이벤트가 수신되어야 하는것 아닌가요? disconnect 이벤트는 어떻게 발생되어 

socket.on('disconenct' ..... 이 실행된 걸까요??

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

처음 새로고침할 때 방 삭제가 이루어지는데 문제는 처음 새로고침 응답이 먼저 도착합니다. 그래서 1명으로 뜨지만 실제로는 삭제된 상태입니다. 그래서 2번째 새로고침을 할때서야 제거됩니다.

김도영님의 프로필 이미지
김도영

작성한 질문수

질문하기