【问题标题】:how to implement facebook like notification?如何实现类似facebook的通知?
【发布时间】:2011-07-18 14:27:30
【问题描述】:

我正在尝试实现一个类似于 Facebook 的实时通知系统,以便在有人将他们添加为朋友时通知用户,例如他们的帖子或帖子对他们的 cmets 的回复。

所有的数据库和 PHP 部分都完成了,但我不知道如何像 Facebook 那样实现它。

每当有人在 Facebook 上对您的帖子点赞/点赞时,屏幕左下角就会出现浅蓝色框。只要有人点击“赞”按钮或在 Facebook 上发表评论,就会发生这种情况。我想知道我应该怎么做才能实现它。

使用 YUI 或任何 JavaScript 框架,我可以在 n 秒后查询数据库表以检查通知。这个方法太重了。

我想知道是否有任何服务器端模块或脚本可以完成,这样每当我的数据库表中有新的通知条目时,服务器就会告诉那个特定的客户端。这样可以完全避免客户端到服务器的不必要的请求调用,并且系统可以有效地为一次在线用户超过 50,000 的网站工作。

我怎样才能做到这一点?

【问题讨论】:

    标签: php javascript facebook yui


    【解决方案1】:

    做到这一点的唯一方法是使用某种机制(例如 Javascript)重复轮询服务器以获取更新。无法将服务器推送到 Web 浏览器。

    【讨论】:

    • 其实是这样。以各种不同的整洁和可靠性的方式。
    • 这个答案非常具有误导性。 Forever 框架允许server push 的真实形式。
    【解决方案2】:

    您应该研究COMET 技术,例如forever frame (tutorial) 和长轮询。这使您可以拥有一种服务器->客户端推送通信的形式。

    【讨论】:

    • 非常感谢您的回复。我会尽快了解这一点。有没有类似的方法可用?这样我就可以选择最好的了。脸书可能会使用什么?因为它不仅仅是通知系统,我将使用这个彗星之类的东西,而且每当一些用户发布回复用户评论等时,该消息将很快附加在底部,就像 facebook 一样.. 再次非常感谢你。
    • @Forte,其他主要技术在文章中列出。它们包括multipart/x-mixed-replace 和各种形式的投票。
    • @Matthew:那我猜像 Drupal 这样的内容管理系统支持这些东西。那么他们已经实现了COMET这个技术了吗?
    • @Anto,我对 Drupal 了解不多,但我不会感到惊讶。
    • @MatthewFlaschen 两个链接都已失效。你可以用thisthis替换它们
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      您基本上设置了一个请求,例如调用向您的服务器/数据库请求该用户通知的服务。如果没有通知(可能在两次搜索之间Thread.Sleep),您可以执行一个 while 循环重试。您的 js 请求将超时,然后您可以在超时时再次调用该函数。这意味着长时间轮询afaik

      【讨论】:

      • AFAIK,这不是长轮询的意思。
      • 这实际上是长轮询。
      【解决方案5】:

      我真的很惊讶没有人提到PubNubPusher

      这两个(竞争对手)正在构建允许实时通知的基础架构,就像 Facebook 一样。

      【讨论】:

      • @aminejallouli 问题没有指定解决方案必须是免费的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      相关资源
      最近更新 更多