Stomp(Simple Text Oriented Messaging Protocol)
STOMP는 웹소켓 위에서 동작하는 프로토콜로 클라이언트와 서버가 전송할 메시지의 유형, 형식, 내용들을 정의하는 매커니즘이다. pub/sub 기반으로 동작한다.
메시지의 헤더에 값을 줄 수 있어 헤더 값을 기반으로 통신시 인증 처리를 구현할 수도 있으며, STOMP 스펙에 정의한 규칙만 잘 지키면 여러 언어 및 플랫폼 간 메시지를 상호 운영할 수 있다.
STOMP는 TCP 또는 웹소켓 같은 양방향 네트워크 프로토콜 기반으로 동작한다.
텍스트 지향 프로토콜이나, Message Payload에는 텍스트 또는 바이너리 데이터를 포함할 수 있다.
WebSocketHandler를 직접 구현할 필요 없이, @MessagingMapping같은 어노테이션을 사용해 메시지 발행시 엔드포인트를 별도로 분리해 관리할 수 있다.
pub/sub
메시지를 공급하는 주체(pub)와 소비하는 주체(sub)를 분리해 제공하는 메시징 기법이다.
예를들면 우체통(Topic)이 있다면 집배원(Pub)이 신문을 우체통에 배달하는 행위가 있고, 우체통이 신문이 배달되는 것을 기다렸다가 빼서 보는 구독자(Sub)의 행위가 있다. 이때 구독자는 다수가 될 수 있다.
stomp 적용
1대다 채팅을 하기 위해 stomp를 적용하기로 했다.
.withSockJS() 있으면 400 에러가 뜬다.
없이 실행하면 잘 된다.
왜 안되는건지 해결 방법은 아직 찾지 못했다.
일단 주석처리하고 진행하는 중.
SockJS는 애플리케이션이 웹소켓 API를 사용하도록 허용하지만, 브라우저에서 웹소켓을 지원하지 않는 경우 코드를 변경할 필요 없이 런타임에 필요할 때 대체해준다.
SockJS 구성
- SockJS Protocol
- SockJS Javascript Client
- SockJS Server
- SockJS Java Client
전송 타입
- WebSocket
- Http Streaming
- Http Long Polling
참고
https://docs.spring.io/spring-framework/reference/web/websocket/stomp/message-flow.html
https://dev-gorany.tistory.com/224
https://dev-gorany.tistory.com/235
https://brunch.co.kr/@springboot/695
'TIL' 카테고리의 다른 글
슬기의 TIL - 2023.06.05 (JMeter) (0) | 2023.06.06 |
---|---|
슬기의 TIL - 2023.06.03 (0) | 2023.06.05 |
슬기의 TIL - 2023.06.01 (Websocket 웹소켓) (0) | 2023.06.02 |
슬기의 TIL - 2023.05.31 (게시글 수정에 관한 깊은 고민) (0) | 2023.06.01 |
슬기의 TIL - 2023.05.30 (Swagger + Docker log + Json boolean) (0) | 2023.05.30 |