웹 소켓(WebSocket)

김내현·2025년 2월 20일

개인공부

목록 보기
50/51

웹 브라우저와 서버 간의 양방향 통신을 가능하게 하는 프로토콜이다. 기존의 HTTP 기반 통신 방식(예: AJAX, REST API)은 클라이언트가 요청해야만 서버가 응답하는 단방향 통신이지만, 웹 소켓은 한 번 연결을 맺으면 서버와 클라이언트가 서로 자유롭게 데이터를 주고받을 수 있는 실시간 양방향 통신을 지원한다.


1. 웹 소켓의 특징

풀 듀플렉스(Full Duplex) 통신
→ 서버와 클라이언트가 동시에 데이터를 주고받을 수 있음.

오버헤드 감소
→ HTTP 요청-응답 방식에서는 데이터를 주고받을 때마다 새로운 요청을 보내야 하지만, 웹 소켓은 한 번 연결되면 계속 유지되므로 불필요한 헤더 정보가 없어 네트워크 비용이 적음.

낮은 지연 시간(Latency)
→ 웹 소켓은 연결을 유지한 상태에서 데이터를 보내므로, 일반 HTTP 요청보다 훨씬 빠르게 데이터를 주고받을 수 있음.

실시간성(Real-time)
→ 채팅, 온라인 게임, 실시간 알림, 주식 거래, IoT 등에서 실시간 데이터 전송이 필요한 경우에 사용됨.


2. 웹 소켓의 동작 방식

웹 소켓은 기본적으로 핸드셰이크(Handshake) 과정을 거쳐 연결을 설정한 후, 지속적으로 데이터를 주고받는다.

① 웹 소켓 핸드셰이크

웹 소켓은 HTTP 프로토콜을 이용해 연결을 시작하지만, 핸드셰이크가 완료되면 TCP 기반의 웹 소켓 연결로 전환된다.

  • 클라이언트는 서버에 Upgrade: websocket 헤더를 포함하여 웹 소켓 연결 요청을 보냄.
  • 서버가 이를 수락하면 101 Switching Protocols 응답을 보냄.
  • 이후, 웹 소켓 연결이 성립되어 양방향 통신이 가능해짐.

② 데이터 전송

  • 연결이 성립된 후에는 서버와 클라이언트가 서로 메시지를 자유롭게 주고받음.
  • JSON, 이진 데이터(Binary), 텍스트 형식 등 다양한 형태의 데이터를 전송 가능.

③ 연결 종료

  • 연결을 닫을 때는 close() 메서드를 호출하여 정상적으로 종료하거나, 네트워크 단절로 인해 강제 종료될 수도 있음.

3. 웹 소켓과 기존 HTTP 방식 비교

비교 항목HTTP 요청-응답 방식WebSocket
통신 방식단방향 (Request-Response)양방향 (Full Duplex)
연결 유지요청할 때마다 새 연결한 번 연결 후 유지
속도요청 시마다 대기 시간 발생실시간 처리 가능
오버헤드헤더 포함 요청 전송초기 핸드셰이크 후 오버헤드 적음
사용 예시REST API, 폼 제출채팅, 실시간 알림, 게임, IoT

0개의 댓글