php - 数据库更改自动通知 :similar with facebook friend request

标签 php javascript jquery facebook social-networking

我想开发一个基于 php mysql 的社交网站。注册用户可以选择将其他用户添加为 friend ,就像在 Facebook 中所做的那样。

如果用户 A 单击用户 B 个人资料上的“添加好友”链接,好友请求记录将相应地保存在 A 和 B 的数据库中。当 B 访问正在等待的 friend 请求显示页面(例如个人资料页面)时,请求将显示为查询 B 的数据库。我认为这很简单。

但是当 B 在线时,C 可以向 B 发出好友请求。我想通知 B C 已经发出这样的请求,即使 B 没有刷新他/她的个人资料页面(或任何页面显示等待中的好友请求的选项)。至于通知的类型,它可以是一个显示好友请求等待总数的框。单击该框将显示详细信息。或者它可以是任何其他形式。

我的兴趣点是如何在 B 在线时让 B 知道新的好友请求,而无需让他/她刷新包含好友请求的页面?

最佳答案

为了最终确定答案,我假设您已经很好地理解数据库/通知数据逻辑,现在您只关心如何将它传递给浏览器。我将在此处列出所有要点。

  1. HTTP 是一个PULL 协议(protocol)。您无法将数据从服务器推送到客户端。
  2. 因此,您可以做的是 - 不断轮询服务器以获取新通知。

您可以进行两种类型的轮询:-

  1. 短轮询 - 您向服务器发送 Ajax 请求以获取新通知。
    • 这是一个很短的请求,但您可以在一个时间间隔内(比如 10 秒)连续执行此请求
    • 服务器处理 PHP 并立即返回。
    • 您处理返回的数据(例如显示通知)
  2. 长轮询 - 您发送与上述相同的请求。但...
    • 在此过程中,请求的 PHP 文件进入无限循环,不断检查数据库。
    • 当数据库发生变化时,PHP 文件“回应”它并结束循环。现在请求完成,浏览器接收到数据。
    • 您处理数据。
    • 启动另一个长轮询 Ajax 请求,然后再次重复这些步骤。
    • (额外:如果 PHP 未在特定超时时间内完成,则中止当前请求并开始新请求。)

接下来,您可以通过两种不同的方式实现其中任何一个:-

  1. 编写您自己的 Javascript 代码 - 需要一些专业知识,但您可以学习!
  2. 使用一些库 - 简单且省时。您可以使用 PubNet , BeaconPush

我希望这对您来说是一个清晰的想法!

关于php - 数据库更改自动通知 :similar with facebook friend request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629083/

相关文章:

抽象类的 PHP 命名空间

javascript - 使用 WinJS 在 Windows Metro 中进行优雅的异常处理

javascript - 带有两个选择框、iframe 和 jQuery 的动态页面(不含 PHP)

javascript - 将动态生成的对象数组传递给 onclick 处理程序

javascript - 如何添加背景颜色仅用于滚动菜单?

java - 在 Java 中检测 mime 类型,结果错误

php - 在 php 中通过 ffmpeg 命令将 avi 文件转换为 mp4 文件

Javascript范围变量切换大小写?

php - 在多个打印的 href 中打印 CSS 样式的循环

javascript - Zend 1.12 : Append javascript to bottom of view