유저가 웹소켓 접속을 종료할 때 마다 유저정보를 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();
'Projcet' 카테고리의 다른 글
prettier 적용이 안될 때 (0) | 2022.08.14 |
---|---|
github 레포지토리 백엔드 프론트엔드 폴더 분리 (0) | 2022.08.13 |
Fetch API cannot load localhost:(port&path). URL scheme "localhost" is not supported 에러 (0) | 2022.05.10 |
express에 async await 추가 후 webpack build시 에러 해결 (0) | 2022.05.09 |
webpack에서 빌드시 the top-level-await experiment is not enabled (0) | 2022.04.15 |