如何最快速地从服务器获得小的,非常频繁的更新?

时间:2011-04-15 14:56:27

标签: ajax performance architecture client-server comet

我正在设计一个Web应用程序,它将使用AJAX与嵌入式设备上的服务器进行通信。但是对于一个功能,客户端需要在很长一段时间内尽可能接近实时地进行非常频繁的更新(>每秒10次)。同时,需要不时处理典型的AJAX请求。

此项目特有的一些注意事项:
这些数据非常小,可能不超过一个数值 一次只有1个客户端连接到服务器,因此缩放不是问题 客户端和服务器将驻留在同一本地网络上,因此连接将快速可靠 该应用程序将专为Android设备设计,因此我们可以利用任何特定于平台的浏览器功能 后端很可能是使用Apache或lighttpd上的WSGI在Python中实现的,但仍然可以讨论。

我正在研究 Comet 技术,包括 XHL长轮询隐藏iframe ,但我对网络开发很陌生,我不喜欢我们不知道我们可以期待什么样的表现。服务器在准备数据时应该没有任何问题,只需要尽快将其推送给客户端。对于任何Comet技术,甚至是常规的AJAX轮询,每秒10次更新是不合理的期望吗?或者你会建议另一种方法吗?

我意识到这最终会采取一些原型设计,但如果有人可以给我一个球场估计或更好的特定技术(客户端和服务器端),在这种情况下提供最佳性能,那将是一个很有帮助。

3 个答案:

答案 0 :(得分:2)

您可能需要考虑WebSockets。这样您就不必轮询,您将直接从您的服务器接收数据。我不确定此时哪些服务器实现可用,因为它仍然是一项非常新的技术,但我发现了一篇关于Android上WebSockets库的博客文章:

http://anismiles.wordpress.com/2011/02/03/websocket-support-in-android%E2%80%99s-phonegap-apps/

答案 1 :(得分:1)

对于Python后端,您可能需要查看Twisted。我也推荐使用WebSocket方法,但是如果没有这个,并且因为你似乎专注于浏览器客户端,我会默认使用HTTP Streaming而不是轮询或长轮询。这个jQuery Plugin实现了一个HTTP流式Ajax客户端,并声称支持Twisted。

答案 2 :(得分:0)

我不确定这是否会有所帮助,但你可能想尝试Comet style ajax

http://ajaxian.com/archives/comet-a-new-approach-to-ajax-applications