【发布时间】:2010-11-19 10:35:44
【问题描述】:
我有一个与 PHP 服务器应用程序通信的 Flex/AIR 应用程序。最近,我的客户要求在应用程序之间进行类似实时的连接,以取代我们目前拥有的;刷新数据需要点击的刷新按钮。
服务器需要在发生变化时有效地将数据推送到客户端。我可以编写检测何时发生变化的代码,但我不确定事物的推送方面。
我最好的选择是什么?
【问题讨论】:
标签: php apache-flex real-time push
我有一个与 PHP 服务器应用程序通信的 Flex/AIR 应用程序。最近,我的客户要求在应用程序之间进行类似实时的连接,以取代我们目前拥有的;刷新数据需要点击的刷新按钮。
服务器需要在发生变化时有效地将数据推送到客户端。我可以编写检测何时发生变化的代码,但我不确定事物的推送方面。
我最好的选择是什么?
【问题讨论】:
标签: php apache-flex real-time push
实际上,您可以在使用 Flash 套接字时将数据从服务器推送到客户端(这意味着绕过 http 协议)。如果你不能使用套接字,你可以使用polling, long polling or http streaming 之类的东西。但是,手动完成所有操作都需要一段时间,因此我建议您查看已经具有此功能的产品。 WebOrb for PHP 就是其中之一,据我所知是免费的。
【讨论】:
我不是 flex 开发人员,因此我不会为您提供一些代码来帮助您解决这种情况,但我可以为您提供一些关于如何解决此问题的想法。
我会设置您的 Flex 代码,而不是寻找 PHP 来推送到 Flex,以不断探测 PHP 中的新事件。如果您可以确定服务器会足够快地响应,您可以每秒探测一次。或者,每 5 秒探测一次的东西仍然是实时的。
如果 PHP 将 DATA 发送回您的 flex 应用程序,那么我会确保它发送带有数据的 ID,以便您可以在 flex 应用程序中使用该 ID 来了解最后返回的数据是什么。每次你探测 PHP 发送你收到的最后一个 ID 时,告诉 PHP 只在那个 ID 之后发送新的数据。很多时候,您会进行探测并且不会有任何返回,但它比一遍又一遍地接收相同的数据并浪费带宽和进程来确定数据是否已经显示在屏幕上要好。
【讨论】:
您不能将数据从服务器推送到客户端。这就是网络的本质:(
您需要做的是不断地从客户端轮询服务器并检查是否有变化。
如果发生了变化,您可以采取必要的措施。这就是 google / facebook 和其他所有人的做法。对用户来说,它看起来像是服务器推送了数据,但在内部,客户端一直在轮询服务器。
【讨论】: