STOMP
는 Simple/Stream Text Oriented Messaging Protocol 약자다.
말 그대로 간단한 문자 기반 메세징 프로토콜이다.
프로토콜
이란 원거리에서 메세지를 서로 주고 받을때 정의된 양식 규칙 체계이다.
다시말해 STOMP
는 웹 상에서 텍스트 송,수신을 위해 미리 정의된 특정한 규칙이다.
STOMP에 정의한 규칙만 잘 지키면 여러 언어, 여러 플랫폼간에서 메세지를 상호 운영할 수 있다.
STOMP
는 기존 AMQP 나 MQTT 와 같은 메세지 전송을 위한 다른 프로토콜들과 다르게 binary 기반이 아닌 텍스트 기반 프로토콜이다.
그렇기 때문에 개발자가 읽기 쉽고 사용하기에 좋다.
STOMP
는 HTTP와 마찬가지로 프레임(frame)을 사용해 전송하는 프로토콜이다.
프레임이란 주소와 명령, 명령 수행을 위한 데이터가 모두 포함된 데이터를 의미한다.
기본적으로는 텍스트 기반 통신을 사용하지만, 바이너리 기반 통신도 지원한다.
메시지 전송 방식은 TCP
위에서 STOMP에서 정의한 Frame 구조로 Client와 Server 상호간에 메세지를 전달한다.
STOMP
는 메시지를 수신 할 대상 집합을 관리하는 일을 한다.
STOMP
는 메시지에 대한 스팩만을 정의하고 있기 때문에, 기능 구현은 전적으로 서버에 맡긴다.
Frame
은 명령(Command)
과 추가적인 헤더(Header)
와 추가적인 바디(Body)
로 구성이 된다.
Frame
은 몇 개의 텍스트 라인으로 지정된 구조인데 첫번째 라인은 텍스트(Command 명령어)이고 이후 key:value 형태로 header 정보를 포함한다.
header
이후에 공백 줄을 하나 더 추가하는 것으로 header
의 끝을 설정할 수 있다.
header
이후에는 Payload(Body)가 존재한다.
페이로드(Payload)는 전송되는 데이터를 의미.
[EX] JSON에서 DATA 부분.
[EX] 택배 배송을 보내고 받을 때, 택배 물건이 payload.
Payload(데이터)는 Body에 위치하는데, 끝은 NULL 문자로 설정한다.
아래 Frame의 구조를 보면 HTTP 요청과 왜 유사한지 알 수 있다.
COMMAND
header1:value1
header2:value2
Body^@
COMMAND
에 사용 가능한 명령어들은 아래와 같고 상세 구현 내용은 STOMP 공식 페이지에서 확인 할 수 있다.
STOMP(Simple/Stream Text Oriented Message Protocol)[무명소졸의 웹개발]
STOMP Protocol Specification, Version 1.2[STOMP 공식 reference]