인프런 커뮤니티 질문&답변

roider2316님의 프로필 이미지
roider2316

작성한 질문수

Slack 클론 코딩[실시간 채팅 with React]

socket.io 이벤트 연결하기

socket.io 버전

해결된 질문

작성

·

818

·

수정됨

0

다시 시도해보고 질문하겠습니다.

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

4버전 쓰십쇼! 안 되면 도와드릴게요

roider2316님의 프로필 이미지
roider2316
질문자

기존의 socket.io를 4.2.0 버전으로 업데이트 하고 useSocket.ts 부분도

import { useCallback } from 'react';
import io, { Socket } from 'socket.io-client';

const backUrl = 'http://localhost:3095';

const sockets: { [key: string]: SocketIOClient.Socket } = {};
const useSocket = (workspace?: string): [SocketIOClient.Socket | undefined, () => void] => {
  const disconnect = useCallback(() => {
    if (workspace) {
      sockets[workspace].disconnect();
      delete sockets[workspace];
    }
  }, [workspace]);

  if (!workspace) {
    return [undefined, disconnect];
  }
  sockets[workspace] = io(`${backUrl}/ws-${workspace}`, {
    transports: ['websocket'],
  });

  return [sockets[workspace], disconnect];
};

export default useSocket;

이렇게 바꿨습니다. 참고로 SocketIOClient.Socket부분은 그냥 Socket으로 쓰니깐

이런 타입 에러가 나서 그냥 원래 타입대로 나뒀습니다. 그리고 실행해보니 콘솔엔

이런 에러가 뜨고

프론트 터미널 쪽에선 webpack-dev-server에러가 떴습니다.

그리고 이게 문제인 것 같은데 백엔드 터미널에서 앱 충돌 에러가 뜹니다.

 

 

roider2316님의 프로필 이미지
roider2316
질문자

추가로 네트워크 쪽에선 GET요청 전부 504 Gateway Timeout에러가 뜹니다.

Error occurred while trying to proxy: localhost:3090/api/workspaces/sleact/members

roider2316님의 프로필 이미지
roider2316
질문자

혹시나 4버전으로 수정하는 도중 딴거 건드렸을 까봐 다시 2버전으로 돌려봤는데 백엔드 쪽에서 앱 충돌 문제는 안생기고 버전 안 맞는 에러만 뜨는 것 같습니다.

roider2316님의 프로필 이미지
roider2316
질문자

아 제로초님 해결되었습니다. 다른 답글 보니 emit쪽의 오타를 수정해서 해결했다고 하길래 저도 보니 대소문자 오타가 있었네요. 죄송합니다.

roider2316님의 프로필 이미지
roider2316

작성한 질문수

질문하기