WebSocket 만을 사용하기만해도 기본적인 실시간 메세징 서비스는 구축할 수 있을 것입니다.
하지만 WebSocket 은 텍스트 데이터를 교환한다는 것 외에 어떠한 형식도 존재하지 않기 때문에 클라이언트와 데이터를 교환하는데에 한계가 있음을 알 수 있습니다. (정해진 형식이 아예 없다는 것은 이식성과 확장성이 굉장히 낮다는 것)
따라서 개발자들은 이러한 WebSocket 을 통한 메세징 방식에 하나의 통신 규약을 더 얹었고, 그것이 바로 STOMP 입니다.
쉽게 말해 STOMP 는 메세지를 일정한 규칙에 맞춰서 작성하자 인데 이는 굉장히 직관적일 수 있습니다. 그 이유는 HTTP 통신 방식의 데이터 구조와 굉장히 유사하기 때문입니다.
또한 WebSocket 그 자체로는 위 코드에서 보았듯이 세션 그룹을 관리하는 기능이 존재하지 않으며, 서로 다른 플랫폼 간의 데이터 교환이 상당히 불편하다는 것을 알 수 있습니다.
따라서 개발자들은 이러한 그룹을 만드는 구독(subscription) 과 특정 그룹에게 메세징을 보내는 발행(publishing) 매커니즘을 수행하는 브로커라는 것을 도입했습니다.
다시 정리하면, WebSocket 을 통한 단순 텍스트 교환 방식과 달리 STOMP 프로토콜은 메세징의 형식이 존재하고, 구독과 발행의 개념을 통해 메세징을 처리합니다.
출처