【问题标题】:Long polling Windows Phone, 60 seconds TimeOut长轮询 Windows Phone,60 秒 TimeOut
【发布时间】:2012-03-26 20:45:43
【问题描述】:


您好
Windows Phone 应用程序需要连接到服务器并从中获取消息。这是使用 WCF 和服务器上的长轮询完成的。 3 分钟是在服务器上定义的超时。从 windows phone 调用是使用 HttpWebRequest 完成的。
问题是 Windows Phone 设备的获取请求超时时间为 60 秒(模拟器的值不同,大于 3 分钟)。
目前我无法减少服务器超时。在 60 秒后执行新的 GetRequest 不会再收到消息。
有人有想法吗?
谢谢

【问题讨论】:

    标签: wcf windows-phone-7 long-polling


    【解决方案1】:

    我认为在移动设备上保持连接打开不是一个好主意。我假设这就是你正在做的事情。在我的应用程序中,我会在需要时通过创建新的 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 上找到。这可能会提供更合适的设计。

    【讨论】:

    • 我已经看过这篇文章了,这个示例使用了 50 秒的超时时间,在这种情况下没有问题。我无法在我的应用程序中确定消息何时在服务器上可用。它就像一个聊天应用程序,所以我总是需要检查是否有新消息发送,所以长轮询比进行大量获取操作要好。
    • 我认为这是设计使然。移动连接不应长时间处于打开/空闲状态。你最好的选择是推。请参阅此处了解更多信息:msdn.microsoft.com/en-us/library/ff402537(v=vs.92).aspx
    • 不能使用推送,正如我所说的,它就像一个聊天消息,我不能有超过 2 秒的延迟。说得更通俗一点,它就像一个 Siri 应用,需要非常快的响应,而且这个应用不仅仅在 windows phone 上,所以实现推送通知系统需要做第三次,并且需要更多的时间来获得响应。
    • 好的,我想现在我更了解您的要求了。请查看我的更新回复。
    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2011-04-20
    • 2019-05-28
    相关资源
    最近更新 更多