如何根据用户操作更新内容[如facebook墙]

时间:2011-02-28 13:44:49

标签: php jquery ajax zend-framework

对于我的下一个应用程序,我想实现具有facebook墙功能的东西,但让我解释一下。对于那些使用过facebook的人,你知道当有人在你的墙上发布消息,并且你登录到你的账户时,你会立即在左下角的某个地方收到通知。最近他们甚至推动了这一点,如果有人评论它,评论会在您可视化页面时更新,就像即时聊天一样。

我的应用程序将用PHP开发,我将使用Zend Framework来完成它。我对基本原理感兴趣,这使得facebook墙表现得像那样(实时更新)。我知道有ajax涉及但我无法确定当用户做某事时javascript是如何触发的。或者更重要的是,如何将用户查看页面后添加的一些信息推回给用户。例如,假设有人将我添加为朋友。如果我已登录,我希望看到“X已将您添加为朋友”的通知。我希望您了解我正在尝试做什么。 如果你能告诉我一些基本的想法,也许提供一些有这些信息的链接,我将非常感激。

感谢您抽出宝贵时间阅读本文。

4 个答案:

答案 0 :(得分:2)

您需要查看cometreverse ajaxajax polling

答案 1 :(得分:2)

  1. 如果触发某个事件,则将事件存储在数据库中(使用ajax或不使用ajax)。

  2. 您将需要服务器中的脚本来检查是否已触发某些事件。该脚本应该能够检查存储在数据库中的事件。

  3. 您需要定期在步骤2中执行脚本。这可以使用ajax(javascript或jquery)和函数settimeout(在javascript上)来定期向服务器发送ajax请求。

  4. 从服务器发送更改。因此,使用javascipt和jquery解析响应和页面更新。

  5. 所以,它可以概括为

    1. 注册活动(针对一位用户)

    2. 检查事件(对于其他用户)

    3. 解析回复并更新页面

    4. 有几种优雅的方法可以做到这一点,正如其他人所回答的那样。

      最好的方案是启动项目,并在遇到困难时寻求帮助。

答案 2 :(得分:0)

只有部分可能保持HTTP连接打开,因此最佳选择可能是轮询更改。您可以每秒发送一个请求,以查看自“x”时间以来是否有任何更改。在您沿服务器时间发送的每个响应上。使用新请求,您可以发送旧请求的时间,服务器可以返回中间发生的任何事件。

答案 3 :(得分:0)

您也可以阅读有关AMQP的内容。您可以向收件人inboxes发送邮件(在系统中执行某些操作后),然后在开始后或以某个时间间隔阅读inboxes