작성
·
359
0
안녕하세요 제로초님 ㅎ
제가 sleact프론트 만들기 강의를 듣고 express로 서버를 직접 구현해보고 있습니다.
근데 socket부분을 구현하던 중 의문이 들었습니다.
workspace가 바뀌거나, 페이지 새로고침을 하면 서버에 새롭게 socket.on('connect')
요청이 가고 서버에선 새롭게 다시 통신을 합니다.
이렇게 새롭게 유저를 넣어주고,
이렇게 서버로 온라인 리스트를 보내주고 콘솔에 찍어주니
새로고침할때마다 id 앞에있는 socket id가 이렇게 바뀌는데,
매번 새로고침할때마다 기존의 socket은 삭제되고, 새롭게 생성되는 것인가요?
(disconnect해서 onlineList= {} 에서 삭제되는것 질문하는거아님)
그리고 DMList에서 onlineList를 가져온다음 socket.off를 해주는 이유가 무엇인가요>?
질문이 길어서 죄송합니다. 답변 기다리겠습니다!
답변 1
0
네 새로고침하면 기존 소켓은 연결이 끊깁니다. 그래서 새로 연결해야 하는 것이고요.
DMList에서는
useEffect니까 당연히 return은 cleanup입니다. 기존 연결했던 socket을 끊어주어야 합니다. 이 useEffect는 socket이 변경될 때마다 실행되는데 기존 socket이 계속 연결되어있으면 안 되니까요.
답변 감사합니다! 항상 많이 배우고 갑니다