local에서 확인한 모습
local에서 확인한 모습
<React.StrictMode> off한 후 상황
웹소켓 인스턴스를 생성하는 곳에서 console을 찍어서 일어나는 일을 추적함.
SocketProvider에서 socket 인스턴스를 만들고 socket을 사용할 수 있게함.
console.log('SocketProvider를 사용하는 곳');
const { socket, isConnected } = useContext(SocketContext);
...
console.log('소켓 인스턴스 생성');
const socket = useRef(
createSocketInstance('/competitions', {
transports: ['websocket'],
query: { competitionId },
auth: {
token: `Bearer ${localStorage.getItem('accessToken')}`,
},
reconnectionDelay: 3000,
}),
);
...
렌더링 되면서, 인스턴스 생성을 반복하는 것을 확인함.
해당 페이지에 콘솔을 찍고 렌더링이 몇 번 일어나는 지 확인함
정확히 5번 일어나는 것을 확인해 소켓 문제가 아니라 렌더링이 여러번 일어나면서 일어난 결과라고 판단함
socket을 싱글톤 패턴을 적용해서 반복적으로 인스턴스화하지 않도록 구현하자