[10분 테코톡] 루키의 Spring WebSocket과 STOMP를 활용한 실시간 통신 구조
- HTTP는 실시간 통신 시 주기적인 폴링으로 비효율적이며, 웹소켓은 지속적인 양방향 연결을 통해 즉각적인 메시지 푸시를 가능하게 합니다. 🔄
- 웹소켓 연결은 HTTP
Upgrade 요청을 통해 수립되며, 클라이언트와 서버 간 영구적인 통신 채널을 형성합니다. 🔗
- 웹소켓 자체는 메시지 형식을 제공하지 않으므로, 구조화된 통신을 위해 STOMP와 같은 상위 프로토콜이 필요합니다. 💬
- STOMP는
COMMAND, Headers, Body로 구성된 간단한 텍스트 기반 메시지 프로토콜로, 클라이언트와 서버가 메시지를 이해하도록 돕습니다. 📜
- STOMP는
pub/sub 모델을 지원하여, topic을 통해 발행된 메시지를 해당 topic을 구독하는 여러 사용자에게 동시에 효율적으로 전달합니다. 📡
- Spring에서 STOMP 메시지는
inboundChannel에서 파싱되고 MessageHandler에서 처리된 후, brokerChannel과 outboundChannel을 거쳐 구독 클라이언트에게 전달됩니다. 🚀