본문 바로가기
Projcet

socket.io 에러 socket.io connect 2번 되는 에러 해결

by 준형코딩 2022. 8. 8.

 

유저가 웹소켓 접속을 종료할 때 마다 유저정보를 pop 해주는 기능을 만들었는데

계속 disconnection 이벤트가 2번이 발생하여 유저 정보가 제대로 갱신 되지 않는 원인을 찾고자

socket.io 연결 사용자 정보를 불러와서 확인을 해 보니

접속을 할 때 2번이나 접속이 되는 이슈가 있었다. 

node js 백엔드에서는 그 원인을 찾을 수 없었고 결국 프론트엔드에서 socket 연결 코드를 두번이나 실행 시킨다는 것을 확인하고

하나를 줄여주었다  .

결과적으로 disconnection이 두번 발생하는 경우를 방지할 수 있었다.

 

 

문제가 발생한 disconnection 부분 코드

 

  socket.on("disconnecting", () => {
    users.pop();
    console.log("user poped!!");
    console.log(users);
    socket.rooms.forEach((room) => {
      socket.to(room).emit("bye", socket.nickname);
      socket.to(room).emit("users", users);
    });
  });

사용자 정보 확인 코드 .. (참고 . socket.io 최신버전에서 작동한다 - 버전마다 코드가 다름)

  console.log( socket.client.conn.server.clientsCount + " users connected" );

2번 실행하여 문제가 발생한 프론트엔드쪽 socket.io 연결 코드

const socket = io();