STOMP.JS

최재홍·2023년 5월 20일
0
post-custom-banner

STOMP

STOMP는 HTTP에서 모델링 되는 Frame 기반 프로토콜. STOMP는 프레임 단위로 메시지를 주고 받는다. 프레임은 커맨드, 헤더, 바디로 구성된 텍스트이다.

  • 메시징 전송을 효율적으로 하기 위해 탄생한 프로토콜(websocket위에서 동작)
  • 클라이언트와 서버가 전송할 메시지의 유형, 형식, 내용들을 정의하는 메커니즘
  • 텍스트 기반 프로토콜로 subscriber, sender, broker를 따로 두어 처리한다.
  • stomp를 이용하면 채팅방을 여러개로 개설이 가능하다.

"STOMP is the Simple (or Streaming) Text Orientated Messaging Protocol."

텍스트 기반으로 메세지를 주고 받을 수 있다. 문자가 크다면 스트리밍 될 수도 있다고 한다.

"STOMP provides an interoperable wire format so that STOMP clients can communicate with any STOMP message broker to provide easy and widespread messaging interoperability among many languages, platforms and brokers."

언어와 플랫폼에 국한되지 않고 다양하게 사용할 수 있다. 그러한 이유는 공통으로 사용할 수 있는 메세지 전송 형식이 있기 때문이다. 전송 주체인 클라이언트와 브로커는 서로 약속한 포맷으로 데이터를 주고 받는 것 같다. 서버라고 하지 않고 브로커라고 표현한 것은 받은 메세지를 전달하는 역할을 하기 때문일 것이다

사용방법

// 스톰프 클라이언트 객체를 만든다.
const client = new StompJs.Client({ brokerUrl, onConnect })

// 연결한다. CONNECT 프레임을 보낸다.
client.activte()
// 서버와 연결되었을 때 실행할 콜백함수
function onConnect() {
  // 구독한다. SUBSCRIBE 커맨드를 보내다.
  client.subscribe(topic, onMessage)
}

// 프레임을 받으면 실행할 콜백함수
function onMessage(message) {
  console.log(message)
}

브로커 주소를 준비해 스톰프 클라이언트 객체를 만든다. activeate() 메소드로 CONNECT 프레임을 브로커로 전송한다. 서버와 연결되면 onConnect() 함수가 실행될 것이다. 곧장 토픽을 구독하기 위해 subscribe() 메소드를 사용해 SUBSCRIBE 프레임을 보낸다. 메세지를 받으면 onMessage() 함수가 실행 될 것이다.

post-custom-banner

0개의 댓글