https://youtu.be/9UUi5s_hkBU?si=GkIDsKL3hntVPDUD

Spring WebSocket 예외 처리 가이드 (feat. StompSubProtocolErrorHandler)

요약 정리

실시간 통신과 HTTP의 한계


HTTP(HyperText Transfer Protocol) "제가 먼저 말 걸기 전엔 대답하지 마세요."

HTTP의 가장 큰 특징은 '클라이언트 요청 -> 서버 응답' (Request-Response) 구조라는 점이다.

만약 채팅 애플리케이션을 만든다고 상상해보자

A 사용자가 B 사용자에게 메시지를 보냈을 때, B 사용자는 가만히 있어도 A가 보낸 메시지를 실시간으로 받아야 한다. 하지만 HTTP 방식에서는 B의 클라이언트(브라우저)가 서버에 계속 물어봐야만 메시지를 받을 수 있다. 서버는 B에게 먼저 A에게 메시지가 왔다고 알려줄 수 없다.

실시간 통신을 위한 눈물겨운 노력들: Polling, Long Polling

WebSocket이 등장하기 전, 개발자들은 HTTP의 한계를 극복하기 위해 몇 가지 방법들을 사용했다.

이처럼 HTTP 기반의 방법들은 모두 '흉내'에 가깝지, 진정한 의미의 양방향 실시간 통신이라고 보기는 어렵습니다.

WebSocket의 본질


WebSocket은 클라이언트와 서버 간에 하나의 TCP 연결(Connection)을 열어두고, 그 연결을 통해 양방향(Full-Duplex)으로 자유롭게 데이터를 주고받을 수 있게 하는 통신 프로토콜입니다.

WebSocket은 어떻게 동작하는가?