ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • STOMP
    네트워크 2024. 8. 19. 21:41

    STOMP, Simple Text Oriented Messaging Protocol

    WebSocket은 Text, Binary 두 가지 타입의 메시지만 주고 받을 수 있고 메시지의 내용에 대해서는 형식이 정해져있지 않습니다.

    이 때문에 메시지 전송을 효율적으로 하기 위해 탄생한 프로토콜이 STOMP 입니다.

    STOMP는 frame 기반의 프로토콜이며 command - header - body 구조로 되어있습니다.

    또한 STOMP는 publish - subscribe 의 형태로 메시지를 전송 / 구독하여 처리합니다.


    STOMP frame 구조

    COMMAND
    
    header1:value1
    
    header2:value2
    
    Body^@

     

    - Command

    클라이언트 command는 CONNECT, SEND, SUBSCRIBE, UNSUBSCRIBE, BEGIN, COMMIT, ABORT, ACK, NACK, DISCONNECT 등이 있습니다.
    서버 command에는 CONNECTED, MESSAGE, RECEIPT, ERROR 등이 있습니다.

     

    - CONNECT : 클라이언트 연결 시작합니다.

    CONNECT
    accept-version:1.0,1.1,2.0
    host:stomp.github.org
    
    ^@

     

    - CONNECTED : 서버가 연결 시도를 수락하면 CONNECTED로 응답합니다.

    CONNECTED
    version:1.2
    
    ^@

     

    - ERROR : 서버가 연결을 거부한 경우 ERROR 프레임에 거부 이유 담아서 응답을 권장합니다.

    ERROR
    version:1.2,2.1
    content-type:text/plain
    
    Supported protocol versions are 1.2 2.1^@

     

    - SEND : 메시지 전송합니다.

    SEND
    destination:/queue/a
    content-type:text/plain
    
    hello queue a
    ^@

    * destination : 메세지의 목적지

    * content-type : body type

     

    - SUBSCRIBE : 메시지를 구독할 수 있습니다.

    SUBSCRIBE
    id:0
    destination:/queue/foo
    ack:client
    
    ^@

    * destination : 구독할 대상 지정

    * ack : 메시지 소비 방식 정의 auto / client

      - auto

        기본값이며 클라이언트가 메시지를 수신할 때마다 자동으로 서버에 ack을 보냅니다. 

        이 경우 클라이언트의 별도의 확인 절차 없이 수신하는 즉시 해당 메시지가 처리된 것으로 서버에 전달합니다.

      - client, client-individual

        클라이언트가 명시적으로 ack 프레임을 전송해야만 서버에서 메시지가 확인된 것으로 간주합니다.

        * client : 여러 메시지를 묶어서 ack 전송 가능

        * client-individual : 각 메시지마다 ack 전송


    Publish - Subscribe

    pub / sub 방식은 특정 주제(Topic)에 대해 메시지를 발행(publish)하고, 그 주제에 대해 구독(subscribe)한 클라이언트들이 그 메시지를 수신하는 구조입니다.

    • 발행(Publish):
      • 발행자는 특정 주제(토픽)에 대해 메시지를 전송합니다.
    • 구독(Subscribe):
      • 구독자는 특정 주제를 구독하여, 그 주제에 대해 발행된 메시지를 수신합니다.
      • 여러 구독자가 동일한 주제를 구독할 수 있으며, 그 경우 동일한 메시지를 모두 수신합니다.
    • 토픽(Topic):
      • 발행자와 구독자 간의 연결점입니다. 메시지가 발행되고 구독되는 특정 주제입니다.
      • 예를 들어, 채팅방을 하나의 토픽으로 간주할 수 있습니다.

    참고

    https://stomp.github.io/stomp-specification-1.2.html

    '네트워크' 카테고리의 다른 글

    WebSocket  (0) 2024.08.19
    OAuth2.0  (0) 2024.08.17
    쿠키, 세션  (0) 2024.02.22
Designed by Tistory.