2011-09-08 155 views
0

我们的架构是使用Push引擎将数据发送到浏览器, 有谁能告诉我Push Engine的用途是什么? (为什么它需要,因为使用正常的AJAX编程可以使同一件事变得可行)\为什么需要Push引擎

请指导我。

回答

0

假设您访问一个网站,并且网站不断更新。您的浏览器需要不断更新您正在查看的数据,这意味着浏览器需要与服务器保持通信并获取更新。

您可以使用ajax每隔几秒发出一次请求,每次从服务器获取更多数据。问题是 - 你需要进行大量的Ajax调用,并且为每个调用打开一个连接(一个套接字),并且最终这是一个非常缓慢的过程。如果请求之间的间隔很大,则服务器上的更新与浏览器中的更新之间会有一段延迟。

为了解决这个问题,我们可以操纵HTTP调用 - 保持请求(连接)打开,并不断发送数据。这样,当服务器想要发送一些东西给客户端(浏览器)时,就有了一个开放的连接,并且它不需要浏览器的下一个Ajax调用。 HTTP服务器的请求超时,所以在请求超时之前,浏览器将关闭它并创建一个新的请求。

另一个(更好的)方法是使用XMPP协议,它用于Facebook和MSN等聊天。

+0

这是一个PUSH引擎,但不是一个好的引擎。 EventSource&WebSockets是更好的服务器推送类型 – Raynos

+0

同意,但它们是新的和更多的支持是必需的。旧的浏览器不支持它或禁用它 – galchen

+0

只有IE9和遗留/不赞成使用的浏览器不支持Websockets或事件源。对于IE9有仿真回退(如Flash网络套接字或COMET技术)。 – Raynos

0

AJAX是一种拉式方法 - 它要求客户端连接到服务器。如果你有一些你想要直播的信息 - 例如足球比赛中的比分直播 - 那么即使在服务器上没有数据等待的情况下,AJAX呼叫也必须定期进行。推送引擎是相反的 - 客户端和服务器保持连接,服务器在有数据要发送时推送数据。

+0

但推的想法(因为客户端总是启动与服务器的连接)是套接字保持打开数据传输,并且服务器控制何时发送数据。它被称为长轮询,这是一个推动的变化(http://en.wikipedia.org/wiki/Push_technology - 查看长轮询) – galchen

+0

这就是我说的 - >“一个推动引擎是相反的 - 客户端和服务器维护当有数据要发送时,连接和服务器推送数据。“ – ManseUK