2012-09-15 3 views
3

긴 폴링 Ajax 요청이 있습니다. 브라우저, 최소 IE는 아니지만 페이지 이탈시 요청을 종료하지 않으므로 사용자가 다른 사이트를 방문하더라도 요청은 열린 상태로 유지됩니다. 말하자면, 브라우저는이 연결의 응답을 성공적으로 처리 할 수 ​​있습니다. 결과는 어디에도 없습니다. 일반적으로 htmlxml connection abort 또는 stop for windows 호출과 같은 일반적인 권장 사항은 분명히 작동하지 않습니다. 내 구현은 언로드 할 때 Ajax 호출을 추가하여 페이지 연결이 끊어 졌음을 알려주므로 일부 더미 응답을 보내고 브라우저는 사용 가능한 풀에 연결을 반환합니다. 이 접근 방식은 작동하지만 나를 설계했습니다. 불행히도 저는 GMAIL과 같은 다른 프로그램에서 비슷한 문제를 볼 수 있습니다. 또한 긴 폴링을 수행하고 일부 재로드 후에 결과가 작동을 멈 춥니 다. 따라서 누군가가 짧은 폴링으로 전환하거나 연결 시간 제한을 지정하지 않고 문제를 해결할 수있는 좋은 방법을 발견하면 솔루션을 공유하십시오.페이지 폴링시 긴 폴링 Ajax 요청을 종료하는 방법

답변

0

IE의 XHR에는 수동으로 연결을 끊는 abort() 메서드가 있습니다.

그것은 조금 해키,하지만 당신은 같은 것을 시도 할 수 :

<body onbeforeunload="AbortMyAjax()"> 

및 활성 긴 조사를 중단하는 방법을 사용합니다.

$this.lp = null; 
function _LongPoll() { 
    $.ajaxSetup({ cache: false }); 
    $this.lp = $.getJSON(m_PollUrl, _LongPollCallback); 
} 

그리고 몸 beforeunload에서 :

if(!!QueueManager.lp && !!QueueManager.lp.abort) QueueManager.lp.abort('PAGE_CLOSED'); 

참고로

, 여기 내 프로젝트에서 코드의 비트입니다