2012-12-05 3 views
3

저는 HTML5, javascript, jQuery 및 PhoenGap을 사용하여 개발 된 크로스 플랫폼 브라우저 기반 응용 프로그램 인 Android 모바일 응용 프로그램에서 작업 해 왔습니다.모바일 클라이언트 브라우저가 특정 시간 초과 후 ajax 호출을 중단합니다.

응용 프로그램은 클라이언트 - 서버 기반이므로 우리는 서버에서 데이터를 가져 오기 위해 자주 비동기 웹 서비스 호출을합니다. 이 시나리오에서는 많은 양의 데이터가 포함 된 데이터를 가져 오는 동안 문제가 발생합니다. 여기서,이 경우 데이터를 얻기 위해 백그라운드에서 실행되는 많은 데이터베이스 쿼리가 있습니다.

몇 분이 지나면 상태 0 오류 메시지가 나타나는 2G 연결을 사용하여 응용 프로그램을 테스트하고 있습니다.

내 질문에 대한 답변을 받기 전에 몇 분이 지나면 모바일 브라우저가 웹 서비스 호출을 중단 할 수있는 옵션이 있습니까?

우리는 데이터를 가져 오기 위해 ajax 호출을하고 있습니다. 참조 용 샘플 코드. 우리는 다양한 타임 아웃 옵션으로 테스트했지만 긍정적 인 결과는 없습니다. 3G 네트워크에서 잘 작동합니다.

$.ajax({ 
      type: "POST", 
      url: wsUrl, 
      contentType: "text/xml", 
      dataType: "xml", 
      data: soapRequest, 
      async: true, 
      timeout:300000, 
      tryCount:0, 
      retryLimit:3, 
      success: processSuccess, 
      error: processError 
    }); 
+0

을 찍어서 AJAX 응답을 기다리는 동안 네트워크 연결 자체가 실패하지 않았다는 확신이 있습니까? –

+0

예, 웹 서비스 호출을하기 전에 네트워크 가용성을 확인하십시오. 3G에서 아무 문제없이 작동합니다. 2G 자체에서 테스트하는 동안 우리는이 문제에 직면 해 있습니다. 모든 종류의 서버 측 최적화 및 시간 초과가 증가되었습니다. – Dantuluri

+0

얼마나 많은 데이터가 처리되고 있습니까? –

답변

0

예, 아약스 호출에서 시간 초과를 사용할 수 있습니다. 이것은 예를 들어, 다음과 같습니다 보시다시피

$.ajax({ 
      url: syncURL, 
      data: {}, 
      dataType:"jsonp", 
      timeout: 10000, 
      jsonpCallback: 'jsonpxchange', 
      success:function (data) { 
       console.log("OK!!"); 
      }, 
      error: function(jqXHR, exception) { 
       if (jqXHR.status === 0) { 
        alert('No network'); 
       } else if (jqXHR.status == 404) { 
        alert('Not fount [Error: 400].'); 
       } else if (jqXHR.status == 500) { 
        alert('[Error: 500].'); 
       } 
       if (exception === 'parsererror') { 
        alert('parser error'); 
       } else if (exception === 'timeout') { 
        alert('timeout'); 
       } else if (exception === 'abort') { 
        alert('abort'); 
       } else { 
        alert('Undefined'); 
       } 
     } 
     }); 

, 나는 예를 10secs를 들어, timeout (밀리 초에서)를 사용합니다. 그리고 나서 exception===timeout

관련 문제