Websocket
: 웹에서 하나의 TCP
연결을 통해 양방향 통신을 구현하는 컴퓨터 통신 프로토콜 기술
ws://
HTTP Upgrade
헤더 필드를 사용하여 http 프로토콜에서 ws 프로토콜로 전환HTTP Upgrade
헤더는 HTTP/1.1
에 도입된 헤더오버헤드
일반 http 통신시 요청 헤더는 오버헤더로 추가적인 정보들을 포함하므로 단시간 많은 통신시 무거울 수 있음)tcp/80
사용하여 연결 (80
번 포트는 http
프로토콜의 기본 포트 번호. 443
번 포트는 https
프로토콜의 기본 포트 번호)handshake
하면 ws 프로토콜로 전환양방향(full duplex) 통신
이므로 응답과 요청의 구분이 없음요청 응답 구분이 없다는 의미는 기존에는 클라이언트가 무조건 요청을 "먼저" 보내야 서버로부터 응답이 와서 통신이 진행되는 방식이었는데 양방향 통신에서는 서버도 데이터를 먼저 전송할 수 있다는 의미.
polling
방식을 이용하여 실시간 통신 구현.polling
방식은 기존의 클라이언트 요청-서버 응답을 사용하여 실시간 통신을 구현하는 것으로 여러 클라이언트에서 서버에 polling 방식으로 통신을 시도할 경우 서버에 부담을 주게 됨.handshaking
이라 불리는 클라이언트-서버간의 TCP
연결 하나를 통해 계속해서 양방향(full duplex) 통신
이 가능함.http
프로토콜을 이용한 통신 방식은 클라이언트 요청 후 서버 응답이 오면 연결이 해제됨.웹소켓 연결 시도할때 보내는 http 요청
GET / HTTP/1.1
Host: localhost
Connection: upgrade // 프로토콜을 변경할 것임을 알림
Upgrade: websocket // 변경할 프로토콜이 웹소켓이라는 의미
웹소켓 연결 생성 과정
HTTP Upgrade
헤더에 설정후 요청 전송HTTP 101 응답
전송 (101 응답
은 서버 측에서 프로토콜 전환을 승인한다는 의미)