웹소켓과 STOMP 차이

웹소켓은 세션 연결 및 종료, 메시지 전송을 WebSocket 핸들러를 통해 직접 구현해야 한다.

만약 단체 채팅방의 경우, 직접 각채팅방에 접속해있는 유저 식별 및 그에 맞게 전송해야 한다.

위 로직을 구현하는게 순수 웹소켓만으로는 복잡해진다.

STOMP는 웹소켓과 다르게 , 목적지기반 메시지 라우팅을 지원한다.

  • 클라이언트와 서버가 특정 주제(topic) 또는 경로를 기반으로 메시지를 교환할 수 있다.

  • 클라이언트 1번이 room 1, 2, 3번에 들어가있다. -> 클라이언트 1번이 특정 room들을 구독한다.

  • 만약 room 1번에 메시지가 생성될 경우 해당 room에 들어가있는 모든 유저에게 메시지를 전송하는게 편하다.

  • 메시지 교환 절차

    • 클라이언트에서 지정된 특정 roomId에 메시지를 발행하면 broker에 의해서 해당 roomId 채널에 메시지가 전달 된다.

    • 동시에 roomId를 구독하고 있는 클라이언트 들에게 실시간으로 메시지가 전달된다.

출처 : https://brunch.co.kr/@springboot/695#comments

Last updated