Realtime Transport

WebSocket 연결 흐름

실시간 통신은 WebSocket 하나로 끝나지 않으며 핸드셰이크, 프레임 처리, heartbeat, 재연결, SSE/long polling 대안을 함께 설계해야 합니다.

01

Upgrade 요청

클라이언트가 HTTP 요청에 Upgrade와 Sec-WebSocket-Key 헤더를 담아 전환을 요청합니다.

handshake
02

서버 승인

서버가 프로토콜 전환을 승인하면 같은 TCP 연결에서 양방향 프레임을 주고받습니다.

101
03

프레임 송수신

텍스트, 바이너리, ping, pong, close 프레임으로 메시지와 제어 신호를 분리합니다.

frame
04

생존 확인

heartbeat로 끊어진 연결을 감지하고 idle timeout에 대응합니다.

liveness
05

재연결/대체

끊김 후 backoff 재연결을 수행하고 환경에 따라 SSE나 long polling으로 대체합니다.

fallback
WebSocket
양방향 실시간 채팅, 게임, 협업 편집처럼 서버와 클라이언트가 모두 자주 보내는 경우에 적합합니다.
상태 유지 필요
SSE
서버에서 클라이언트 단방향 알림, 로그 스트림처럼 서버 push만 필요하면 단순하고 HTTP 친화적입니다.
브라우저 EventSource
Long Polling
호환성 우선 프록시 제약이 강한 환경에서 fallback으로 쓰지만 요청 비용이 큽니다.
지연 증가

운영 확인 기준

인증 갱신 긴 연결 중 권한 변경과 토큰 만료를 어떻게 반영할지 정합니다.
메시지 크기 큰 메시지와 빠른 전송은 큐 적체와 메모리 증가를 만들 수 있습니다.
로드밸런싱 여러 서버에서는 sticky session이나 pub/sub 브로커가 필요할 수 있습니다.