{SpringBoot} - 스프링 웹소켓 WebSocket (feat. STOMP)
- 스프링은 웹소켓과 일반 소켓을 모두 지원하며, STOMP 프로토콜을 사용해 메시지를 주고받습니다. 🗣️
- STOMP는 간단한 메시지 프로토콜이며, SockJS는 소켓을 위한 JavaScript 라이브러리입니다. 🧰
- 토픽은 브로드캐스트 방식으로 여러 명이 구독할 수 있고, 큐는 1대1 대화에 사용됩니다. 📢
- 브로커는 퍼블리셔와 서브스크라이버 사이에서 토픽을 관리하며, 스프링이 이 역할을 수행합니다. 🧑💼
- 웹소켓은 HTTP 프로토콜 위에서 동작하지만, STOMP와 SockJS는 더 하위 레벨에서 동작하여 더 간단합니다. ⬇️
- STOMP는 액션과 데이터를 기본적으로 가지는 간단한 프로토콜입니다. 📝
- 서버는 컨피그 파일과 컨트롤러로 구성되며, 컨피그에서 토픽을 정의하고 컨트롤러에서 클라이언트와 서버가 연결됩니다. ⚙️
- CORS 문제를 해결하기 위해 컨피그 파일에서 허용되는 Origin을 설정해야 합니다. 🛡️
- 웹소켓 연결 유지를 위해 서버는 1분마다 헛(heartbeat)을 보내 클라이언트의 상태를 확인합니다. 💓
- 클라이언트는 HTML과 JavaScript로 구현할 수 있으며, 리액트로도 구현 가능합니다. 💻