당신은 여러 연결을 유지 할 필요가 없습니다 : 브라우저, 당신은 확인해야 할 모든 의해 부과 유한 제한 당신이 XHR의 건설 비동기 플래그를 포함한다는 것입니다 달성하기. Javascript의 비동기 성질은 연결이 살아있는 동안 다른 것들이 처리되는 것을 허용합니다. 자바 스크립트의 XHR은 단일 스레드이기 때문에 차단하고 있다고 생각할 수도 있습니다.
자바 스크립트의 XHR은 이벤트 루프 모델 때문에 비 블로킹입니다. 자바 스크립트 엔진은 끊임없이 루프를 돌며 등록 된 호출이 완료되었는지 여부와 콜백을 처리해야하는지 여부를 확인합니다. 이를 통해 조작이 비 블로킹 (non-blocking)되어 단일 자바 스크립트 응용 프로그램이 다중 XHR 긴 폴링 요청을 처리 할 수 있습니다.
요청에 jQuery를 사용할 수 있다면 XHR을이 함수로 매우 멋지게 꾸밀 수 있습니다 : http://api.jquery.com/jQuery.ajax/. 이를 통해 20 초의 시간 초과를 정의하고 즉시 처리 할 수 있습니다 (서버와의 연결을 다시 시작).
짝수 - 긴 폴링을 최적화하기 위해 서버 스택을 고려할 수도 있습니다. 웹 서버가 Apache 2.2와 같이 요청 당 스레드를 생성하지 않는지 확인하십시오. 그렇지 않으면 시스템 자원이 빨리 소모됩니다! node.js (많은 동시 요청을 처리하는 데 유용함)를 사용할 수 있으면 socket.io 라이브러리를 서버 측 및 클라이언트 측 솔루션 (http://socket.io/#home)으로 조사하십시오.
시간 초과가 20000 ms 인 타이머와 서버 비동기 요청을 완료 한 후 다른 20000 ms의 시간 동안 대기하는 타이머는 어떨까요? – ComputerSaysNo
클라이언트가 http 연결을 끊으면 서버가이를 확실히 등록합니다. 이 이벤트를 잡을 수 있어야합니다. – bennedich
@bennedich : 연결이 닫힐 때 이벤트가 생성된다고 생각하지 않습니다. 서버가 어떻게 알 수 있는지는 알 수 없습니다. – networkprofile