[네트워크] WebSocket
Web + Socket
● 소켓(Socket) :
- 프로그램이 네트워크에서 데이터를 주고 받을 수 있도록 네트워크 환경에
연결할 수 있게 만들어진 연결부
- 사용되는 Protocol(규칙) : TCP/IP
- OSI 계층 중 제 4 계층인 전송 계층(Transport Layer)의 주 단위
- Socket = 엔드포인트, 통신의 양끝단
● 웹 소켓(WebSocket) :
- 클라이언트와 서버 간의 양방향 통신을 위한 프로토콜(규칙)
- 기존 HTTP 통신 방식과 달리, 웹소켓은 연결이 한 번 성립되면 실시간(LIVE~)으로
양쪽에서 자유롭게 데이터를 주고 받을 수 있다
● HTTP와 WebSocket의 차이점
○ HTTP :
- 클라이언트가 서버에 요청(Request) 보내고, 서버가 그 요청에 대한 응답(Response)
- 클라이언트가 요청하지 않으면 서버에서 데이터 전송 방법 X
- 즉, 단방향 통신이다

○ WebSocket:
- 클라이언트와 서버 간의 지속적인 연결을 유지하며 양방향으로 데이터 자유롭게 교환 가능
- 한 번 연결 성립되면, 클라이언트가 요청하지 않아도 서버에서 데이터를 Push할 수 있다
- 실시간 통신이 가능해진다! → 양방향 통신이라 가능하다!

WebSocket의 장점
● 양방향 통신 : 클라이언트와 서버 간에 언제든 데이터 주고받을 수 있다.
● 낮은 오버헤드 : HTTP와 달리 요청-응답 반복하지 않기 때문에 네트워크 자원 소모 덜함.
● 실시간 데이터 교환 : 주식 차트, 온라인 게임, 실시간 채팅 등.
IF...
- 주식 차트가 실시간 업데이트가 되지 않는다면?
- 메이플스토리, 로스트아크 등 실시간 라이브 서비스하는 게임에서 HTTP 통신으로 구성된다면?
- 디스코드 등 실시간 채팅 프로그램에서 나는 메세지를 보냈는데 서버가 HTTP 통신 방식이라면?
● 유지되는 연결 : 연결이 지속되므로, 데이터 전송 속도가 빠르고 연결에 대한 부담 적다.
WebSocket 동작 방식
● 핸드셰이크 : 웹소켓은 HTTP 요청을 통해 서버에 연결 요청.
서버가 승인하면, HTTP 연결이 WebSocket으로 전환
● 연결 유지 : 연결이 성립되면 클라이언트와 서버는 지속적인 연결 통해 데이터 교환 가능
● 양방향 데이터 전송 : 클라이언트나 서버는 언제든지 데이터 전송 가능 → 이벤트 기반으로 이루어진다.
● 연결 종료 : 더 이상 통신이 필요가 없을 때 연결 종료 가능. → 양쪽에서 연결을 끊을 수 있다.
HTTP와 WebSocket 비교표
| HTTP | WebSocket | |
| 통신 방식 | 단방향 통신 | 양방향 통신 |
| 연결 지속성 | 요청 후 연결 종료 | 연결 유지 |
| 데이터 전송 방식 | Request-Response 패턴 | 자유로운 데이터 송수신 |