2012-03-26 4 views
4


Hello
Windows Phone 응용 프로그램은 서버에 연결하여 메시지를 가져와야합니다. 이 작업은 서버에서 WCF 및 긴 폴링을 사용하여 수행됩니다. 3 분은 서버에 정의 된 시간 초과입니다. Windows Phone에서의 호출은 HttpWebRequest를 사용하여 수행됩니다.
문제는 Windows Phone 장치가 가져 오기 요청 (에뮬레이터의 값이 3 분 이상)에 대한 시간 초과가 60 초입니다.
현재 서버 시간 초과를 줄일 수 없습니다. 60 초 후에 새 GetRequest를 수행하면 메시지가 더 이상 수신되지 않습니다.
누구나 아이디어가 있습니까?
감사합니다.긴 폴링 Windows Phone, 60 초 TimeOut

답변

3

모바일 장치에서 연결을 열린 상태로 두는 것이 좋다고 생각하지 않습니다. 나는 그것이 당신이하는 일이라고 추측하고 있습니다. 내 애플 리케이션에서 새로운 HttpWebRequest를 생성하여 필요할 때마다 폴링 만하면된다. 하지만 40 초마다 열차 도착 상태를 업데이트 할 것이므로 앱에서이 작업을 수행하는 것이 좋습니다.

주어진 일정에 따라 데이터를 가져 오려면 타이머를 넣고 웹 서버를 3 분마다 또는 요구 사항이 무엇이든 호출하십시오.

앱을 닫을 때를 확인하거나 서버에 새로운 데이터가 거의없는 경우 푸시 메커니즘을 구현해야합니다.

업데이트 : 여기에 시간 제한 문제를 다루는에 좋은 기사입니다 - http://blog.xyzzer.me/2011/03/10/real-time-client-server-communication-on-windows-phone-with-long-polling/

업데이트 2 : 무엇, 당신은 연결을 계단식 가질 수 있도록 당신이 그것을 배열 된 경우 - 무슨 뜻인지하는 것은 '때문에 당신이 할 수있다 연결 당 60 초를 초과하면 두 개의 연결을 수용 할 클래스를 작성할 수 있으며, 한 번 연결하면 시간 초과가 발생합니다. 예를 들어 몇 초 전에 다른 연결을 시작할 수 있습니다. 그들 사이에 최대 5 초의 겹침이 있습니다. 이렇게하면 항상 열린 연결을 유지할 수 있습니다.

GChat 앱으로이 사람들이 한 일을 보시고 소스 코드를 link에서 받으실 수 있습니다. 이것은보다 적절한 디자인을 제공 할 수 있습니다.

+1

이 기사에서는 이미이 문서를 보았으며이 예제에서는 50 초의 시간 제한을 사용합니다.이 경우 아무런 문제가 없습니다. 서버에서 메시지를 사용할 수있는시기를 앱에서 결정할 수 없습니다. 채팅 앱과 같으므로 항상 새 메시지가 전송되었는지 확인해야하므로 많은 폴링 작업이 많은 작업을 수행하는 것보다 낫습니다. – Morti

+0

이것은 의도적으로 생각합니다. 모바일 연결을 장시간 열거 나 유휴 상태로 두어서는 안됩니다. 푸시가 가장 좋습니다. 자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/ff402537(v=vs.92).aspx –

+1

채팅 메시지와 같은 말처럼 푸시를 사용할 수 없습니다. 지연 시간은 2 초를 초과 할 수 없습니다. 표현력을 높이려면 Siri 앱처럼 매우 빠르게 응답해야합니다. 또한이 앱은 Windows Phone에서만 사용할 수있는 것이 아니므로 푸시 알림 시스템을 구현하려면이 세 번째 작업이 필요하며 응답을 받기까지 더 많은 시간이 필요합니다. – Morti