기존 에는 로그아웃을 하면 로그인 페이지로 바로 이동을 했는데 useSocket 훅스를 추가하고 나서 로그아웃을 하면 위처럼 useSocket에러가 생기네요 ㅠㅠ 뭐가 잘못된건지 잘 모르겠어서 질문남깁니다!
아래는 useSocket 코드랑 로그아웃 코드입니다..
import { io, Socket } from 'socket.io-client';
const backUrl = 'http://localhost:3095';
const sockets: { [key: string]: Socket } = {};
function useSocket(workspace?: string): [Socket | undefined, () => void] {
const disconnect = () => {
if (workspace) {
sockets[workspace].disconnect();
delete sockets[workspace];
}
};
if (!workspace) return [undefined, disconnect];
if (!sockets[workspace]) {
sockets[workspace] = io(`${backUrl}/ws-${workspace}`, {
transports: ['websocket'], // without polling http
});
}
return [sockets[workspace], disconnect];
}
export default useSocket;
const handleLogout = () => {
axios
.post('/api/users/logout', null, {
withCredentials: true,
})
.then(() => {
mutate(false, false);
navigate('/login');
});
};
+)
// useEffect(() => {
// return () => {
// disconnect();
// };
// }, [workspace, disconnect]);
워크스페이스 컴포넌트에 useEffect로 disconnect() 했던것을 주석처리하니 로그아웃 에러는 사라졌습니다!
그외에도 로그인 시 접속중인 유저를 바로 못 불러오고 여러번 새로고침을 해야 겨우 접송중 유저 불러오기에 성공하곤 했었는데 저 useEffect를 주석처리하니 그 에러 역시 고쳐졌습니다.
disconnect() 코드가 왜 그런 에러들을 발생시킨건지,, 코드 주석처리 없이 에러 해결을 하려면 어떻게 해야할지 아이디어 주시면 감사드리겠습니다 😭
https://github.com/devjoylee/slack