Stomp(작성중)
Intro
웹소켓 기능을 이용하면 웹 애플리케이션에 실시간 기능을 추가할 수 있습니다. 실시간으로 다른 사용자와 채팅을 한다던가, 내 글에 다른 사용자가 댓글을 다는 경우 이를 실시간으로 알려준다던가 하는 등의 행위들이 있겠죠.
다만 웹소켓만 가지고 복잡한 기능을 구현하기는 힘이 듭니다. 웹소켓은 오직 실시간 통신애먼 초점을 둔 기능이며 라우팅별 메세징 처리기능이라던가, 전달하고자하는 메세지를 구조화 한다던가, 특정 URL에 접속된 사용자에게만 별도의 메세지를 처리하는 기능 등 추가적인 기능은 모두 수작업으로 직접 개발해야 하는것입니다.
이러한 복잡한 웹소켓 통신기능을 좀더 쉽게 구현하기 위한 목적으로 만들어진게 STOMP입니다.
STOMP(Stomp Text Oriented Messageing Protocol)
스톰프는 웹소켓에서 동작하는 텍스트 기반 메세징 프로토콜로 복잡한 웹소켓 통신을 추상화하여 좀 더 간단하게 웹소켓 기능을 개발하기 위한 목적으로 설계되었습니다. 스톰프에는 connect
, disconnect
, publish
, subscribe
등 다양한 웹소켓 메서드를 통해 구조화된 웹소켓 통신 프로그램을 개발할 수 있습니다.
STOMP구조
스톰프는 텍스트 기반 프로토콜로 HTTP와 비슷한 구조를 가지고 있습니다. 스톰프메세지는 헤더와 , 바디, 커멘드로 이루어져 있습니다. 스톰프는 표준화된 커멘드 (CONNECT, SEND, SUBSCRIBE...)를 통해 클라이언트와 브로커 간의 통신을 효율적으로 제어할 수 있습니다.
SUB/PUB 모델
스톰프에는 구독자, 발행자 모델이 존재합니다. 클라이언트는 특정 주제에 대해서 구독(SubScribe)할 수 있으며, 해당 주제에 메세지가 전달(발행)될 경우 해당 주제를 구독한 클라이언트에게 실시간으로 메세지를 발행(Publish)합니다.
Message Broker
STOMP는 주로 Message Broker와 함께 사용됩니다. 스톰프에는 구독/발행 모델이 존재하며, 메세지브로커는 이 구독과 발행간의 중재자 역할을 수행합니다.
메세지 브로커는 특정 주제에 메세지가 전달되는 경우 해당 주제를 구독 하고 있는 사용자들에게 메세지를 실시간으로 전달해 줍니다.
Last updated