개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

WebSocket — 실시간 양방향 통신

2025년 10월 23일
WebSocket실시간

WebSocket은 클라이언트와 서버 사이에 지속적인 양방향 통신 채널을 제공하는 프로토콜입니다.

HTTP의 한계

HTTP는 클라이언트가 요청해야만 서버가 응답할 수 있습니다. 서버가 먼저 데이터를 보낼 수 없습니다. 실시간 채팅, 주식 시세처럼 서버에서 먼저 데이터를 보내야 하는 상황에서는 HTTP만으로 해결하기 어렵습니다.

폴링(Polling) 방식으로 우회할 수 있지만, 주기적으로 요청을 보내 서버 부하가 크고 지연이 발생합니다.

WebSocket 핵심 특성

양방향 통신 (Full-Duplex)

연결 후에는 클라이언트와 서버 모두 언제든지 데이터를 보낼 수 있습니다.

지속 연결

한 번 연결되면 명시적으로 닫을 때까지 유지됩니다. 매 요청마다 연결을 새로 수립하는 오버헤드가 없습니다.

낮은 오버헤드

HTTP 헤더는 매 요청마다 전송되지만, WebSocket 프레임은 최소 2바이트의 헤더만 사용합니다. 데이터 전송 효율이 높습니다.

WebSocket 연결 수립 (핸드셰이크)

WebSocket은 HTTP 업그레이드 요청으로 시작합니다.

클라이언트 요청:
GET /chat HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

서버 응답:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: ...

101 Switching Protocols 응답 후 HTTP 프로토콜에서 WebSocket 프로토콜로 전환됩니다.

WebSocket 사용 사례

사례이유
실시간 채팅서버가 메시지 도착 시 즉시 전송
온라인 게임낮은 지연, 양방향 통신
주식/코인 시세서버 주도 실시간 업데이트
협업 도구다수 사용자 동시 편집 동기화

WebSocket vs SSE

항목WebSocketSSE
방향양방향서버 → 클라이언트 단방향
프로토콜ws:// / wss://HTTP
재연결수동 구현자동 재연결 내장
브라우저 지원매우 광범위IE 미지원
용도채팅, 게임알림, 피드

보안

WebSocket도 TLS를 통해 암호화할 수 있습니다. ws://가 비암호화, wss://가 TLS 적용 버전입니다. 프로덕션 환경에서는 반드시 wss://를 사용해야 합니다.

← 이전 글UDP — 사용자 데이터그램 프로토콜