오늘의 기능 : 스프링부트에서 1:1 메세지 기능구현 하기에
WebSocket / STOMP / SockJS 에 대한 용어 정리
웹소켓을 사용하는 이유?
실시간 채팅앱과 같은 기능을 구현하기 위해서는 클라언트에서 계속해서 HTTP 프로토콜을 통해 서버에 요청하는 것은 비효율적이다
WebSocket는 HTTP를 통해 최초 연결이 되며 , 이후 일정 시간이 지나면 HTTP 연결은 자동으로 끊어지고 webSocket connection은 유지된다
HTTP는 stateless하기 때문에 서버에 변경사항이 생겨도 클라이언트에서 요청을 하지 않으면 변경사항이 적용되지 않지만, WebSocket은 지속적으로 connection을 유지하기 때문에 실시간으로 변경사항이 적용된다.
근데 그러면 Ajax Json 쓰면 되잖아? 라고 하실수 있는데 Ajax도 결국 HTTP를 사용하기 때문에 여전히 문제가 되며, 웹 소켓을 통해 이를 해결할 수 있다.
**즉, 매번 데이터를 가져오기위해 url을 요청하는 것은 번거로운데 이를 해결 해준다
WebSocket 단점
WebSocket가 구현이 되지 않는 환경에서도 작동할수 있도록 WebSocket Emulation 기술을 제공하는 JavaScript 라이브러리가 바로 SockJS 이다
✅ 간단하게 기본 개념 정리
전체 구조 흐름 요약
[클라이언트(브라우저)]
⇅ WebSocket 연결 (STOMP + SockJS)
[Spring Boot 서버]
⇅ 메시지 전달 및 처리
[DB 또는 메모리 저장소]