웹 소켓은 웹 환경에서 클라이언트와 서버 간에 양방향(Full-Duplex) 통신을 할 수 있도록 해주는 프로토콜이다. 기존의 HTTP 통신 방식은 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)을 하는 식의 단방향, 요청 - 응답 패턴에 기반하고 있었기 때문에 실시간 양방향 데이터 송수신에 제약이 많았다. 이를 극복하기 위해 웹 소켓이 등장했다.
특징
- 실시간 양방향 통신
웹소켓 연결이 수립되면 서버와 클라이언트 양쪽 모두 언제든지 자유롭게 데이터를 전송할 수 있다. 클라이언트가 요청을 보내지 않아도 서버가 주기적으로 필요할 때마다 클라이언트로 데이터를 push할 수 있다. - 지속적인 연결 상태 유지
일반적인 HTTP 요청은 매번 요청-응답 시 연결을 맺었다 끊는 과정을 반복하지만, 웹소켓은 한 번 연결이 맺어지면 유지되며 별도의 핸드쉐이크 과정을 거치지 않고 바로 양방향 통신을 이어갈 수 있다. - 상대적으로 적은 오버헤드
HTTP Poling이나 Long Poling 같은 기존 실시간 구현 방식은 연결 유지나 빈번한 요청으로 인해 불필요한 트래픽과 오버헤드가 발생할 수 있다. 반면 웹소켓은 최초 연결 후에는 메세지 교환 시에만 패킷을 전송하기 때문에 오버헤드가 적다.
사용 예시
- 실시간 채팅 애플리케이션
- 온라인 게임
- 실시간 주가, 스포츠 경기 스코어 전달
- 공동 문서 편집 툴
'Network' 카테고리의 다른 글
[Network] API 게이트웨이, NAT 게이트웨이 (0) | 2024.12.07 |
---|---|
CS 네트워크 Blocking, Non-blocking, Sync, Async (0) | 2024.10.17 |
CS 네트워크 로드밸런싱 (1) | 2024.10.17 |
CS 네트워크 TLS/SSL Handshake (0) | 2024.10.17 |
CS 네트워크 HTTP & HTTPS (0) | 2024.10.15 |