
HTTP:
- Client(유저)가 request만 가능함
- 서버가 기억하지못함.
- 비연결성
- 실시간 통신하기에 적합하지 않음.
WebSocket:
- 웹에서 하나의 TCP 연결을 통해 양 방향 통신을 제공하는 컴퓨터 통신 프로토콜
- 실시간 서비스를 구현하기에 적합한 기술
- HTTP의 반이중(Half-Duplex)방식이 아닌 진짜 양방향 통신인 전이중(Full-Duplex)방식이다
Half-Duplex
: 양 방향 통신을 하지만 송수신을 동시에 할 수 없고, 무전기 방식처럼 해야한다
Full-Duplex
: 동시에 송수신을 하며 양 방향 통신을 할 수 있다
특징
최초 접속이 일반 http 요청을 이용한 handshaking으로 이뤄진다
TCP socket은 바이트 스트림을 사용하지만, WEB socket은 UTF-8의 텍스트와 바이너리 둘다 보낼 수 있다
텍스트의 경우 시작과 끝에 0x00과 0xFF를 붙여서 구분한다
- Statefull
서버와 클라이언트가 한번 연결되면 계속 같은 라인을 사용해 통신하므로 HTTP 사용시 필요없이 발생되는 HTTP와 TCP 연결 트래픽을 피할 수 있다
웹소켓은 최초접속을 제외하면 헤더 정보를 보내지 않지만, HTTP 프로토콜은 요청을 할 때마다 헤더정보를 보내게 되므로 네트워크 비용에서 이득이다
HTTP 요청을 그대로 사용하므로 80, 443포트를 그대로 사용할 수 있고, HTTP의 규격인 CORS적용, 인증 등을 기존과 동일하게 이용할 수 있다
작동원리