您好,Windows Phone应用程序需要连接到服务器并从中获取消息。这是使用WCF和服务器上的长轮询完成的。 3分钟是服务器上定义的超时。来自Windows Phone的呼叫是使用HttpWebRequest完成的
问题是Windows Phone设备的get请求超时为60秒(模拟器具有不同的值,大于3分钟)。
目前我不能减少服务器超时。在60秒后执行新的GetRequest不会再收到任何消息
有没有人有想法?
感谢
答案 0 :(得分: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获得。这可能会提供更合适的设计。