- 소켓 프로그래밍은 연결이 유지됨
- HTTP 프로토콜을 사용하는 경우 연결이 유지되지 않음. 즉, 서버가 클라이언트에게 통지해줄 수 있는 방법이 없음 (Push Server)
Push Server와 비슷한 효과를 낼 수 있는 방법
1. Polling
- 클라이언트가 서버에 주기적으로 요청하여 결과를 확인하는 방식
- 요청에 대한 서버 부담이 크지 않거나 실시간 메시지 전달이 중요하지 않은 서비스에 경우 적합
- 요청주기를 너무 짧게 설정할 경우 서버에 무리를 줄 수 있음

2. Long Polling
- 요청에 대한 응답을 서버 이벤트 발생 시점에 받는 방식
- 실시간 메시지 전달이 중요하지만 서버의 상태 변경이 빈번하지 않은 서비스에 적합
- polling 방식에 비해 불필요한 트래픽을 덜 유발 → 서버의 응답을 무한정 기다리지 않고 특정 시간 이후에 새로 요청하는 방식으로 구현

3. Streaming
- 요청에 대한 응답을 완료하지 않은 상태에서 데이터를 계속 내려받는 방식
- 응답 마다 다시 요청해야 하는 Long Polling에 비해 효율적이며 서버의 상태 변경이 잦은 경우 유리
- 연결을 길게 맺고 있는 경우 유효성 관리 등의 부담이 발생 → 스트리밍 방식도 보통 특정 주기로 연결을 재설정 하도록 구현
Polling vs Long Polling