Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 가상화
- 스프링 배치
- Spring Security
- JPA
- spring boot
- CI/CD
- mysql
- vm
- 백엔드
- 스프링
- virtualization
- 스프링 시큐리티
- 웹 서버
- 자바
- 데이터베이스
- Spring
- 도커
- 영속성 컨텍스트
- ORM
- 배포
- Container
- HTTP
- 스프링 부트
- computer science
- spring batch
- 컨테이너
- spring cloud
- web server
- Java
- CS
Archives
- Today
- Total
개발 일기
[Computer Network] 실시간 웹 통신 - 4. STOMP(Simple/Stream Text Oriented Message Protocol) 본문
Computer Science/Computer Network
[Computer Network] 실시간 웹 통신 - 4. STOMP(Simple/Stream Text Oriented Message Protocol)
개발 일기장 주인 2024. 10. 9. 22:12이전 게시글에서 WebSocket은 한계로 인해 STOMP의 필요성을 알게되었고 해당 프로토콜에 대한 추가적인 이해가 필요하다고 판단하게 되어 정리하게 됐다.
STOMP(Simple/Stream Text Oriented Message Protocol)
- WebSocket과 같은 실시간 메시지 전송 프로토콜에서 사용하는 텍스트(문자) 기반의 메시징 프로토콜
- WebSocket은 기본적으로 단순히 데이터를 주고받는 통신 방식일 뿐, 그 안에 담기는 메시지의 형식에 대한 정의가 없기 때문에, 메시지를 주고받는 양측이 어떤 형식으로 통신할지를 정해야한다.
➜ 이때 STOMP와 같은 서브 프로토콜을 사용하면 메시지 형식과 관련된 표준화된 규약으로 사용한다. - 주로 메시지 브로커와 클라이언트 간의 통신을 위한 프로토콜로 사용
- Publish/Subscribe 구조
- Spring WebSocket의 STOMP를 사용하면 Message Broker 없이도 간단한 채팅 기능을 구현할 수 있다고 한다.
STOMP 동작 흐름
프레임 기반 메시징
STOMP는 프레임(Frame)이라는 단위로 메시지를 전송한다.
각 프레임은 특정한 구조로 이루어져 있으며, 기본적으로 Command(명령), Header(헤더), Body(본문)으로 구성된다.
- Command는 메시지의 종류를 나타내며, SEND, SUBSCRIBE, CONNECT 등의 명령어가 사용된다.
- SEND: 메시지를 특정 대상(destination)에게 보내는 명령.
- SUBSCRIBE: 특정 주제(topic)를 구독하여 그 주제에 대한 메시지를 받는 명령.
- CONNECT: 서버에 연결을 시도하는 명령, 클라이언트가 서버와 세션을 맺을 때 사용.
- Header는 메타데이터를 담으며, 메시지를 어느 주제로 보낼지(destination), 수신자의 정보, 메시지의 우선순위 등이 포함된다.
- Body는 실제 메시지의 데이터를 담고 있는다. 텍스트나 바이너리 데이터를 포함
Pub/Sub 모델
STOMP는 Publish/Subscribe 모델을 지원한다.
이는 발행자(Publisher)와 구독자(Subscriber)가 분리된 형태로, 발행자는 특정 주제(Topic)에 메시지를 발행하고, 구독자는 그 주제를 구독함으로써 메시지를 받을 수 있다.
이 방식은 다수의 클라이언트가 동일한 주제를 구독하여 실시간으로 메시지를 받을 수 있도록 해준다.
메시지 브로커와의 상호작용
- STOMP는 메시지 브로커와 클라이언트 간의 통신을 지원한다.
- 메시지 브로커는 STOMP 프로토콜에 따라 메시지를 수신하고, 구독자에게 메시지를 전달하는 중간 시스템으로브로커는 여러 클라이언트 간에 메시지를 중계하고, 클라이언트 간의 메시지 전달을 관리한다.
메세지 브로커에 대해서 다음 게시글에서 구체적으로 다루겠다.
'Computer Science > Computer Network' 카테고리의 다른 글
[Computer Network] OSI 7계층 (0) | 2024.12.17 |
---|---|
[Computer Network] 실시간 웹 통신 - 5. 메세지 브로커(Message Broker) RabbitMQ& Kafka (0) | 2024.10.10 |
[Computer Network] 실시간 웹 통신 - 3. 웹소켓 프로토콜(WebSocket Protocol) (0) | 2024.10.09 |
[Computer Network] 실시간 웹 통신 - 2. 소켓 통신 (10) | 2024.10.09 |
[Computer Network] 실시간 웹 통신 - 1.Polling, LongPolling 그리고 Server-Sent Events (1) | 2024.10.07 |