민프

[React][TypeScript] SockJS, STOMP 연결 (기록) 본문

[React]

[React][TypeScript] SockJS, STOMP 연결 (기록)

민프야 2023. 6. 20. 13:18

STOMP? 

https://minf.tistory.com/220

 

[STOMP] STOMP란 무엇일까?

STOMP(Simple (or Streaming) Text Oriented Message Protocol )란 무엇일까? 공식 홈페이지에 따르면 STOMP는 단순(또는 스트리밍) 텍스트 지향 메시징 프로토콜입니다. STOMP는 STOMP 클라이언트가 모든 STOMP 메시지

minf.tistory.com

 

 

 

ㅇ. NPM 설치

npm i @types/sockjs-client
npm i sockjs-client
npm i @types/stompjs
npm install @stomp/stompjs

ㅇ. 코드

import { Client } from "@stomp/stompjs";
import SockJS from "sockjs-client";

  const connectToWebSocket = () => {
    const topic = "/sub/hello"; // 구독할 주제
    const stompClient = new Client(); // Client 객체 생성

    stompClient.configure({
      // brokerURL: url, // 일반 소켓으로 연결 할 떄
      // 다른 STOMP 클라이언트 설정
      webSocketFactory: () => new SockJS(`http://172.../stomp/ws"), // 링크 + 서버에서 설정해놓은 엔드포인트
      debug(str) {
        console.log(str);
      },
    });

    stompClient.onConnect = () => {
      stompClient.subscribe(topic, (message) => {
        // 메시지 수신 시 처리할 작업
        console.log("Received message:", message.body);
      });

      // 연결 성공 후 수행할 작업
      console.log("WebSocket connected");
    };

    stompClient.onStompError = (frame) => {
      console.log(`Broker reported error: ${frame.headers.message}`);
      console.log(`Additional details: ${frame.body}`);
    };
    stompClient.onDisconnect = (message) => {
      console.log(`onDisconnect: ${message}`);
    };
    stompClient.activate();
  };

SockJS, Stomp 

Comments