react Websocket connection failed (webpack) 문제해결

조민혜·2022년 12월 8일
2

React.js

목록 보기
3/12

프로젝트를 서버에 올리고 나서 화면은 정상으로 떳지만 계속해서 Websocket 오류가 났다..

WebSocket connection to 'wss:/서버주소:3000/ws' failed: WebSocketClient.js:16

왜 나는 웹소켓을 안쓰는데 오류가 나나 할 수 있는데,
웹팩은 파일이 변경될 때 다시 로드하기 위해 WebSocket을 사용한다고 한다 ..
자세한 내용은 해당 링크 참고: https://webpack.kr/guides/development-vagrant/

웹 팩 설정에서 위 오류를 고치기위해 많은시도를 해보았는데 의외로 간단하게 해결 되었다

해결방법
webpack.config.js 파일에 webSocketURL을 지정해 주면된다.

devServer: {
    port: 3000,
    liveReload: true,
    // host 지정
    host: "0.0.0.0",
    allowedHosts: "all",
    open: true,
    client: {
      overlay: true,
      // 웹소켓용 url 지정
      webSocketURL: "ws://0.0.0.0:80/ws",
    },
    compress: true,
  },

주의
url 주소는 지정된 호스트와 동일하게 주고 ( devServer: { host: "0.0.0.0" } )
포트는 80 또는 443 으로 줘도 된다. ("ws://0.0.0.0:80/ws" or "ws://0.0.0.0:443/ws")

참고
만약, 로컬 콘솔에서 나는게 신경 쓰이고 서버에서 소켓을 쓰지 않는다면 아래처럼 작성하면 된다!

devServer: {
    port: 3000,
    liveReload: true,
    // host 지정
    host: "0.0.0.0",
    allowedHosts: "all",
    open: true,
    client: {
      overlay: true,
      // 웹소켓 설정
      webSocketURL: { hostname: undefined, pathname: undefined, port: '0' },
    },
    compress: true,
  },

위 두개를 짬뽕해서 쓴다면 아래처럼 사용 가능 ( env 환경 파일로 실행 환경 구분 )

devServer: {
    port: 3000,
    liveReload: true,
    // host 지정 ( .env 파일로 실행 서버 구분 )
    host: webpackArgv.nodeEnv === "local" ? "localhost" : "0.0.0.0",
    allowedHosts: "all",
    open: true,
    client: {
      overlay: true,
      // 웹소켓 설정
      webSocketURL:  webpackArgv.nodeEnv === "local" ? 
					{ hostname: undefined, pathname: undefined, port: '0' } : 
					 "ws://0.0.0.0:443/ws",
    },
    compress: true,
  },
profile
Currently diving deeper into React.js development.

2개의 댓글

comment-user-thumbnail
2023년 3월 7일

감사합니다!

답글 달기
comment-user-thumbnail
2023년 7월 12일

일하는데 정보찾다가 마지막에 예쁜사람 뭐야... 개발자중에 흔치않은데 쪽지드려도 될까요?

답글 달기