• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

웹소켓은 프록시 사용 할 수 없나요?

23.05.05 23:20 작성 조회수 1.06k

0

`http://localhost:3095/ws-${workspace}`

위 주소로는 잘 되는데

`/api/ws-${workspace}`

로는 연결이 안됩니다.

 

웹소켓은 프록시 못쓰는건지,

못쓴다면 혹시 왜 안되는건지 이유를 여쭈워도 괜찮을까요?

답변 1

답변을 작성해보세요.

0

프록시에서 웹소켓을 쓰려면 웹팩데브서버 옵션에 ws: true를 넣어주시면 됩니다.

grs0412님의 프로필

grs0412

질문자

2023.05.06

  devServer: {
    historyApiFallback: true, //react router
    port: 3090,
    devMiddleware: { publicPath: '/dist/' },
    static: { directory: resolve(__dirname) },
    proxy: {
      '/api/': {
        target: 'http://localhost:3095',
        changeOrigin: true,
        ws: true,
      },
    },
  },  
  sockets[workspace] = io({ path: `/api/ws-${workspace}`, transports: ['websocket'] });

 

지금 위코드인데 이렇게 에러 표시가 뜹니다

<i> [webpack-dev-server] [HPM] Upgrading to WebSocket
<e> [webpack-dev-server] [HPM] Error occurred while proxying request localhost:3090/api/ws-sleact/?EIO=4&transport=websocket to undefined [ECONNRESET] (https://nodejs.org/api/errors.html#errors_common_system_errors)

 

아래코드로 하면 에러는 안뜨지만 역시 연결이 안됩니다.

   sockets[workspace] = io(`/api/ws-${workspace}`, { transports: ['websocket'] });

설정방법은 틀리지 않았는지 궁금합니다

먼저 socket.io 버전을 확인하셔야 하고요(4버전 쓰시면 좋습니다)

https://github.com/ZeroCho/sleact/blob/master/front/hooks/useSocket.ts

여기와 코드가 같아야 합니다.

데브서버 설정은 맞습니다. 저도 지금 front 폴더로 해보니 잘 되는 것 확인했습니다.