4편 소개
- HTTP의 비연결성을 극복하는 다양한 기술
- 9장. 폴링: 클라이언트가 주기적으로 서버에 요청을 보내서 새로운 데이터를 확인하는 방법
- 10장. 롱 폴링: 폴링 보다 호율적인 통신 기법
- 11장. SSE: 서버가 클라이언트로 실시간 데이터를 푸시하는 방법
- 12장. 웹 소켓: 클라이언트와 서버 간의 양방향 통신 프로토콜
9장. 폴링
9.1 구조
- 지속적인 요청으로 서버와 연결을 유지한다.
- 네트웍 대역폭과 서버 자원을 낭비할 수 있다
- 비유: 새로운 소식이 있나요?
9.2 서버 구현
- 채팅 어플리케이션 제작
- 채팅 메세지 조회 기능
- 채팅 메세지 전송 기능
9.3 클라이언트 구현
- 지속적으로 요청을 생성
- 수신한 메세지를 출력
9.4 중간정리
- HTTP 연결을 유지하기 위해 주기적으로 요청을 만드는 기법
- 특징: 단순한 구현
- 주의사항 1: 네트웍과 서버 자원을 낭비할 수 있다.
- 주의사항 2: 지연 시간
참고
10장. 롱 폴링
10.1 구조
- 서버에 요청하고 데이터가 올 때까지 대기한다.
- 서버 자원을 낭비할 수 있다.
- 비유: 새로운 소식이 있나요? 잠깐 기다려 보세요.
10.2 서버 구현
- 클라이언트 대기열 준비
- 채팅 메세지 조회 기능
- 채팅 메세지 추가 기능
10.3 클라이언트 구현
- 지속적으로 요청 생성
- 수신한 메세지를 출력
10.4 중간 정리
- HTTP 연결을 유지하기 위해 응답을 지연하는 기법
- 특징: 실시간성
- 주의사항 : 서버 자원을 낭비할 수 있다.
참고
11장. SSE
11.1 구조
- 서버가 실시시간으로 메세지를 보낸다.
- 리소스를 효율적으로 사용할 수 있다.
- 비유: 새 소식이 오면 알려주세요.
11.2 서버 구현
- 클라이언트 대기열 준비
- 알림 구독 기능
- 채팅 메세지 추가 기능
11.3 클라이언트 구현
- EventSource
- 수신한 메세지를 출력
11.4 재연결
- EventSource 객체는 서버와 연결이 끊기면 다시 연결. retry로 설정
- 이전에 받은 메세지가 있다면 last-event-id 헤더에 값을 실어서 보낸다.
11.5 중간 정리
- 클라이언트와 서버 연결 유지 및 실시간 메세지 전송 기법
- EventSource
- 특징: 실시간 알림을 위한 프로토콜
- 주의사항: 단방향 메세지
참고
12장. 웹 소켓
12.1 구조
- HTTP 단방향성의 한계
- 웹 소켓 프로토콜
- WebSocket API
12.2 서버 구현
- 웹소켓을 웹서버와 통합
- 클라이언트 대기열 준비
- 채팅 기능 구현
12.3 클라이언트 구현
- 채팅 UI
- 웹 소켓 연결
- 수신한 메세지를 출력
- 메세지 전송
12.4 중간 정리
- 웹 소켓 프로토콜
- WebSocket API
- 특징: 실시간 양방향 통신
- 주의사항: 연결 관리