스파르타코딩클럽 내일배움캠프 Websocket 강의를 들으며 공부한 것을 적은 것입니다.
Polling
- HTTP 연결에서는 서버가 클라이언트에게 발송한 데이터가 생기더라도 서버가 일방적으로 클라이언트에게 응답을 보낼 수 없다
- 클라이언트가 요청을 보낼 때까지 기다려야 한다
- 요청을 주기적으로 보내면서 서버가 보내고자 하는 내용이 있는지 확인하여 가져오는 방식이 Polling
- 오버헤드가 상당히 증가한다는 단점
Long Polling
- Polling 의 생명주기의 시간을 늘린다
- 이벤트가 발생할 때 까지 대기
Server Sent Event(SSE)
- 서버에서 클라이언트로 단방향 데이터를 전달할 수 있는 HTML5 기술
- 서버에서 일방적인 데이터 전달이 필요한 곳에 적합
- 스트리밍 서비스
WebRTC
- P2P 통신
- UDP로 통신하기 때문에 빠르다
- 사용자가 많아질 수록 성능이 떨어진다
WebSocket
- TCP에서 동작
- HandShake 요청을 통해 HTTP -> Socket 통신으로 전환하는 과정을 거친다
- 양방향 통신
WebSocket HandShake
let socket = new WebSocket(url);
Events
- open - 연결이 이루어졌을 때
- message - 데이터를 수신하였을 때
- close - 커넥션이 종료되었을 때
- error - 에러가 생겼을 때
socket.onopen = function (e) {};
socket.onmessage = function (e) {};
socket.onclose = function (e) {};
socket.onerror = function (e) {};
데이터 전송
socket.send(body);
연결 끊기
- code - 연결 끊을 때 사용하는 특수 코드
- reason - 연결 끊는 사유
socket.close([code], [reason]);