Web Socket

JinJinJara·2023년 11월 13일
0

TIL

목록 보기
15/19

HTTP VS WebSocket

HTTP

  • 비연결성
  • 매번 연결 맺고 끊는 과정의 비용
  • 요청-응답 구조

Web Socket

웹 애플리케이션 간 양방향 통신을 지원하는 프로토콜

  • 연결 지향

  • 한번 연결 맺은 뒤 유지

  • 양방향 통신

  • 모든 환경에서 사용할 수 없음

  • SockJs, Socket.io 라이브러리

    • 웹 소켓을 지원하지 않는 브라우저에서도 웹소켓을 사용하는 것과 비슷한 기능을 제공

STOMP

Simple Text Oriented Messaging Protocol
간단한 메시지를 전송하기 위한 프로토콜로 메시지 브로커를와 publisher - subscriber 방식을 사용

  • 메시지의 발행자(보내는 사람)와 구독자(받는 사람) 구분

메시지 브로커

: 발행자가 보낸 메시지를 구독자에게 전달

STOMP는 HTTP와 비슷하게 frame 기반 프로토콜 command, header, body로 이루어져 있다.
간단한 메시지 브로커를 활성화하고, 브로커를 타겟으로 하는 목적지를 구성

<STOMP frame 구조>
COMMAND
header1:value1
header2:value2
Body^@

웹 소켓과 STOMP를 함께 사용하면 frame의 구조가 정해져있기 때문에 통신에 용이하다.


  • enableSimpleBroker: 브로커 활성화 + 목적지 구성 및 필터링
    간단한 메시지 브로커를 활성화하고, 브로커를 타겟으로 하는 목적지를 구성
    주로 "/topic"과 같은 프리픽스를 사용하여 목적지를 필터링

  • enableStompBrokerRelay:
    STOMP 브로커 릴레이를 활성화하고, 메시지 브로커에서 지원하는 목적지 프리픽스를 구성
    메시지 브로커의 STOMP 문서를 확인하여 지원하는 목적지에 대한 정보를 얻기

  • configureBrokerChannel:
    애플리케이션에서 메시지 브로커로 메시지를 전송하는 데 사용되는 채널을 사용자 정의
    기본적으로 메시지 브로커로 메시지를 보낼 때, 동기적으로 전송되므로, 이를 비동기적으로 전송하도록 채널을 구성하는 데 사용 가능

  • setApplicationDestinationPrefixes:
    어플리케이션 어노테이션 메소드를 대상으로 하는 목적지를 필터링하기 위한 프리픽스를 구성
    예를 들어, "/app"으로 시작하는 목적지는 어노테이션 메소드로 처리되고, 다른 목적지는 메시지 브로커를 대상으로 함

  • setUserDestinationPrefix:
    사용자 목적지를 식별하는 데 사용되는 프리픽스를 구성
    사용자 목적지는 사용자가 세션별로 구독할 수 있는 고유한 큐의 이름을 제공하며, 다른 사용자가 해당 고유한 큐로 메시지를 전송 가능

  • setPathMatcher:
    메시지의 목적지를 @MessageMapping 및 @SubscribeMapping 메소드에 일치시키기 위해 사용되는 PathMatcher를 구성
    기본적으로는 AntPathMatcher가 사용되며, 필요한 경우 사용자 지정 PathMatcher를 제공 가능

  • setCacheLimit:
    브로커와 관련된 등록에 대한 캐시 제한을 구성
    현재는 구독 레지스트리의 목적지 캐시에만 적용

  • setPreservePublishOrder:
    클라이언트가 메시지를 게시 순서대로 수신해야 하는지 여부를 구성
    이 플래그가 true로 설정되면 동일한 세션 내에서 메시지는 발행 순서를 유지하기 위해 하나씩 "clientOutboundChannel"로 전송

0개의 댓글