https://www.pubnub.com/blog/evaluating-long-polling-vs-websockets/
Evaluating Long Polling vs WebSockets
Explore Long Polling vs WebSockets in real-time web development.
www.pubnub.com
Polling과 WebSocket
1. client - server 통신
- 폴링과 웹소켓은 client - server 간의 실시간 양방향 통신에 사용되는 기술
2. 실시간성
- 실시간 데이터를 처리하기 위해 사용함
3. HTTP 기반
- Polling은 HTTP의 요청/응답 반복
- WebSocket은 초기 핸드셰이크(Handshake) 과정에서 HTTP 사용
* 초기 핸드셰이크(Handshake) 과정
1. client의 요청
- client는 server에 WebSocket 연결을 요청하기 위해 헤더가 포함된 HTTP 요청을 보냄
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket -> client가 WebSocket 프로토콜로 업그레이드 하길 원함 Connection: Upgrade -> 연결을 업그레이드 한다 Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== -> client가 server에 보낼 임의의 key Sec-WebSocket-Version: 13 -> client가 지원하는 WebSocket 프로토콜 버전
2. server의 응답
- server는 client의 요청을 받고 연결을 허용할지 여부를 결정
- 연결 허용하려면 위에서 client가 보낸 key 기반으로 응답 생성HTTP/1.1 101 Switching Protocols Upgrade: websocket -> client의 업그레이드 요청 받아들임 Connection: Upgrade -> 연결 업그레이드 승인 Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= -> client가 보낸 key 기반으로 생성된 응답키
3. 프로토콜 전환
- server가 101 Switching Protocols 응답 코드를 보내면 HTTP에서 WebSocket 연결로 업그레이드 됨
Polling
- client가 일정한 주기로 server에 HTTP 요청을 보내면 server에서 최신 데이터를 응답
- server에 변화가 없어도 client는 계속 요청을 보냄 => 불필요한 네트워크 트래픽 발생
- 주기적으로 데이터를 요청하기 때문에 실시간성이 떨어짐
- 각 요청이 독립적이며 요청마다 새로운 연결이 이루어짐 (HTTP의 stateless)
WebSocket
- client와 server의 지속적인 연결 유지 => 네트워크 트래픽 감소
- 초기에 연결이 완료된 상태에서 계속 데이터를 주고 받을 수 있음
- 실시간성이 높은 양방향 통신
- 대규모 실시간 통신이 필요할 때 적합한 방식
'Web' 카테고리의 다른 글
[Web] HTTP 상태 코드 (0) | 2024.12.01 |
---|---|
[Web] HTTP 메서드 (0) | 2024.12.01 |
[Web] RESTful API 설계 원칙 (0) | 2024.10.10 |
[Web] 세션(Session)과 쿠키(Cookie) (0) | 2024.07.30 |
[Web] RESTful API란? (1) | 2022.10.14 |