更新客户端应用程序中的数据,如何避免轮询?

时间:2010-01-26 03:13:04

标签: http tcp client polling

我有一个桌面客户端应用程序,它使用简单的HTTP帖子通过REST API与服务器应用程序通信。我目前每隔X分钟对客户端进行一次轮询,但我希望更频繁地刷新数据。是否可以让服务器通知客户端任何新数据,或者是否超出HTTP服务器的范围?任何关于最佳方法的想法都将非常感激。谢谢!

2 个答案:

答案 0 :(得分:3)

您可能需要检查以下Stack Overflow帖子的已接受答案,该帖子以一个非常基本的示例描述如何在服务器端使用php实现Long Polling

使用长轮询时,您的客户端应用程序会向HTTP服务器发起一个请求,该请求具有无限超时(或非常长的超时)。现在,只要有新数据,服务器就会找到准备好的活动连接,因此它可以立即推送数据。在传统轮询中,您必须等到应用程序启动新轮询,再加上在发送新数据之前到达服务器的网络延迟。

然后,当发送数据时,连接将关闭,但您的应用程序应立即打开一个新连接,以便始终与服务器建立连接。实际上,如果没有活动连接,将会有一个很小的差距,但在许多应用中这通常可以忽略不计。

答案 1 :(得分:1)

如果您在服务器端打开HTTP连接,则可以在发生更新时发送数据,然后刷新连接以实际发送数据。如果需要数万个连接,这可能会导致TCP / IP堆栈出现问题。