1. websocket 이란?
websocket은 TCP 를 기반으로 양방향/실시간 통신이 가능하게 하는 애플리케이션 계층 프로토콜이다.
2. HTTP와 WebSocket의 차이점
HTTP는 stateless하며, cleint에서 요청이 발생했을 때만 응답을 받는다.
또한, HTTP에서 실시간성을 위해서는 Polling이 필요하다. Polling이란 일정 시간마다 cleint에서 request를 보내고 서버 response를 받아 업데이트하는 방식이다. (여기서 포인트는 반드시 request가 필요하다는 것이다.)
반면 webSocket은 stateful하며, 연결이 유지되기 때문에 cleint에서 요청하지 않더라도 서버에서 이벤트가 발생하면 response를 보내는 양방향 통신이 가능하다.

3. WebSocket 동작 방식
HTTP는 요청마다 handshake가 필요하지만(stateless), websocket은 한 번의 handshake를 하면 연결이 유지가 된다(stateful).
WebSocket을 사용하기 위해서는 먼저 HTTP 요청이 필요하다. 이때 HTTP request에 upgrade 헤더를 사용하면 http 프로토콜에서 웹소켓 프로토콜로 변경된다.
아래 사진에서 요청 헤더 부분의 Upgrade 값이 websocket인 것을 확인할 수 있다.

'Spring Boot' 카테고리의 다른 글
| [Spring Boot] 스프링 공식 문서로 공부하기1 - IoC 컨테이너 (1) | 2025.07.29 |
|---|---|
| [Spring Boot] RestTemplate, Webclient의 차이 (1) | 2025.07.23 |
| [Spring Boot] HttpServletRequest, HttpServletResponse (0) | 2025.03.05 |
| [Spring Boot] Oauth 2.0 구현하기 (0) | 2025.02.18 |
| [Spring Boot] 프로젝트 세팅 (0) | 2025.02.04 |