가독성 있게 보고 싶다면 ➡️ https://pretty-pilot-212.notion.site/WebSocket-ver-Spring-116708535dff803d8f60ffa16a365c22
https://velog.io/@mw310/Stomp-WebSocket-개념-정리ver-Spring
Stomp, WebSocket 개념 정리(ver. Spring)
화상 채팅 프로젝트를 진행하면서 채팅 기능을 구현중에 웹 소켓 관련하여 정리가 필요하여 글을 쓰게 되었다. 먼저 웹소켓에 대해서 알아보자! 웹 소켓 소개 웹소켓 프로토콜은 웹 애플리케이
velog.io
Stomp란(Simple/Stream Text Oriented Message Protocol)
Springboot에서 사용할 시 장점
메시징 프로토콜과 메시징 형식을 개발할 필요가 없다.
STOMP 클라이언트는 Java 클라이언트를 포함해서 사용할 수 있다.
메시지 브로커를 사용하면 구독을 관리하고 메시지를 broadcast하는데 사용할 수 있다.
메시지 브로커는 무엇일까?
- 3줄 요약
- 자세한 것은 아래 링크
STOMP에서 역할
- 클라이언트, 브로커, 서버
- 메시지 흐름
발행자 (Publisher) - 클라이언트가 /pub/... 경로로 메시지를 발행.
서버는 이 메시지를 받아 로직을 처리하고, 처리된 결과를 브로커로 전달.
브로커는 /sub/... 경로를 구독한 구독자 (Subscriber) - 클라이언트에게 메시지를 전달.
반환 타입
- 일반적으로 MessageConverter를 사용하여 serialized된 응답 형태가 반환되고 Messagesms brokerChannel에 전달된다. outbound 메시지는 바로 브로커에게 전달하는 /topic에 경우에는 동일한 형태로 값을 전달 받는다.
- @SendTo, @SendToUser 애노테이션을 사용해서 output message에 목적지를 커스터마이징 할 수 있다. @SendTo는 목적지를 커스터마이징 하기위해서 사용되거나 여러 목적지에 값을 전달하기 위해 사용된다. @SendToUser는 inputMessage를 보낸 user에게만 응답을 보내기 위해서 사용된다.
- @SendTo, @SendToUser를 같이 사용할 수 있고 클래스 레벨에서도 사용할 수 있으며 클래스 레벨에 있던 애노테이션은 메소드 레벨에서 재정의 될 수 있다.
- Message는 비동기로 다뤄지고 @MessageMapping은 ListenableFuture, CompletableFuture, CompletionStage를 반환한다.
- 사실 @SendTo와 @SendToUser는 SimpleMessagingTemplate를 사용하는것과 다르지 않다.
'Back-end > SpringBoot' 카테고리의 다른 글
Kotlin으로 OpenApi(Swagger)에서 multipart와 dto(vo) 같이 받는 법 (0) | 2025.02.10 |
---|---|
[SpringBoot] security 간단 이론 (0) | 2025.01.15 |
[SpringBoot] webflux (0) | 2024.12.18 |