본문 바로가기
Back-end/SpringBoot

[SpringBoot] WebSocket ver.Spring

by backend 개발자 지망생 2024. 12. 18.

가독성 있게 보고 싶다면 ➡️ https://pretty-pilot-212.notion.site/WebSocket-ver-Spring-116708535dff803d8f60ffa16a365c22

 


https://velog.io/@mw310/Stomp-WebSocket-개념-정리ver-Spring

 

Stomp, WebSocket 개념 정리(ver. Spring)

화상 채팅 프로젝트를 진행하면서 채팅 기능을 구현중에 웹 소켓 관련하여 정리가 필요하여 글을 쓰게 되었다. 먼저 웹소켓에 대해서 알아보자! 웹 소켓 소개 웹소켓 프로토콜은 웹 애플리케이

velog.io



image.png

Stomp란(Simple/Stream Text Oriented Message Protocol)


Springboot에서 사용할 시 장점

메시징 프로토콜메시징 형식을 개발할 필요가 없다.

STOMP 클라이언트는 Java 클라이언트를 포함해서 사용할 수 있다.

메시지 브로커를 사용하면 구독을 관리하고 메시지를 broadcast하는데 사용할 수 있다.

메시지 브로커는 무엇일까?

  • 3줄 요약
  • 자세한 것은 아래 링크

https://binux.tistory.com/74

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를 사용하는것과 다르지 않다.