keep-alibe 헤더를 사용하여 클라이언트와 서버 사이의 연결 유지 → tcp 핸드세이크 횟수 감소
HTTP는 클라이언트가 연결을 만드는 프로토콜이며, 서버에서 클라이언트로 임의 시점에 메시지를 보내는 데는 쉽게 쓰일 수 없다.
폴링
클라이언트가 주기적으로 서버에게 새 메시지가 있느냐고 물어보는 방법
폴링을 자주할수록 비용이 높아짐 → 메시지가 없는 경우 자원 낭비
롱 폴링
새 메시지가 반환되거나 타임아웃될 때까지 연결을 유지 → 클라이언트가 서버로부터 새 메시지를 받으면 기존 연결을 종료하고 서버에게 새 요청을 생성
메시지를 보내는 클라이언트와 수신하는 클라이언트가 같은 채팅 서버에 접속하게 되지 않을 수도 있다. HTTP 서 버들은 보통 무상태 (stateless) 서 버 다. 로드밸런싱을 위해 라운드 로빈(round robin) 알고리즘을 사용하는 경 우, 메시지를 받은 서버는 해당 메시지를 수신할 클라이언트와의 롱 폴링 연 결을 가지고 있지 않은 서버일 수 있는 것이다.