inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

socket.io 이벤트 연결하기

WebSocket 연결 에러 질문

368

복실묘

작성한 질문수 5

0

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

// 아무 key값이 들어올수 있으니 이런 형식으로 타입 지정
const sockets: {[key: string]: SocketIOClient.Socket} = {};

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

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.connect(`${backUrl}/ws-${workspace}`,{
    transports: ['websocket'],
  });

  return [sockets[workspace], disconnect]
}

export default useSocket;

 

  const [socket, disconnect ] = useSocket(workspace);

  useEffect(()=>{
    if(channelData && userData){
      socket?.emit("login",{id : userData.id, channels: channelData.map((y)=> y.id)});
    }
  },[userData, channelData, socket]);

  // socket연결을 끊어줄 때
  useEffect(()=>{
    return () => {
      disconnect();
    }
  },[workspace, disconnect])

스크린샷 2023-11-01 오후 6.16.37.png
버전이 달라서 이런 현상이 생기는건지 잘 모르겠습니다. ..

react 웹팩 typescript socket.io babel 클론코딩

답변 1

1

제로초(조현영)

백엔드 서버랑 프론트 서버랑 소켓이이오 버전이 다른가본데요. 프론트는 몇버전이신가요?

1

복실묘

감사합니다 덕분에 해결했습니다!!!

기본 셋팅과 관련하여

0

91

1

초기 셋팅 back과 front만 남겨두고 다 지운 후 진행 방법

0

96

2

focus 시에만 화면 업데이트 되는 이유 + 해결방법

0

149

2

useEffect 개수 관리

0

110

2

라이브러리 서치 방법

0

104

2

함수 정의 패턴

0

77

1

npm run dev 에러

0

152

3

npx webpack 후 에러

0

178

2

'void' 형식 식의 truthiness를 테스트할 수 없습니다.ts(1345)

0

143

2

사용자 가입시 에러발생 (TypeError: Cannot read properties of null (reading 'addMembers')

1

178

2

초기세팅중 packge.json 에러떠요

0

156

2

CORS - Access-Control-Allow-Origin 누락 문제

0

431

3

로그인 페이지 무한 새로고침 현상

0

598

2

Module not found: Error: Can't resolve './App' 에러

0

959

1

배포 방법

0

296

2

npm run dev 시 빌드가 매우 느려졌습니다

0

989

2

alias 경로 설정 오류

0

451

2

fetcher 함수의 data 값이 두번 찍히는 이유

0

277

1

제네릭 질문

0

218

2

ts-node 대신 tsx 사용여부

0

373

1

배포 관련 질문

0

247

1

[nginx + https] 서비스를 실행하면 niginx가 아닌 서비스 화면을 보여주게 하고 싶습니다.

0

385

2

[배포하기] webpack에 aws 퍼블릭 IPv4 주소 와 포트 주소를 작성하고 나서 빌드후 실행하면 오류가 발생합니다.

0

336

1

users 호출 시 쿠키가 담기지 않는 이슈 질문드립니다.

0

247

2