数据库更改中的自动通知:与Facebook好友请求类似

Ist*_*med 4 javascript php jquery facebook social-networking

我希望开发一个基于php mysql的社交网站.注册用户可以选择将另一个用户添加为朋友,就像在Facebook中一样.

如果用户A点击用户B的个人资料上的"添加朋友"链接,则相应地在A和B的数据库中进行朋友请求记录.当B访问等待的friend-requests-显示页面(就像这样的配置文件页面)时,将显示查询B的db的请求.我认为这很简单.

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

我感兴趣的是如何在B在线时让B知道新的朋友请求而不让他/她刷新包含朋友请求的页面?

Vis*_*das 9

为了最终确定答案,我假设你很好地理解了数据库/通知DATA逻辑,现在你只关心如何将它传递给浏览器.我会在这里列出所有要点.

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

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

  1. 短轮询 - 您向服务器发送Ajax请求以获取新通知.
    • 这是一个简短的请求,但你在一个间隔(比如10s)连续进行
    • 服务器处理PHP并立即返回.
    • 您处理返回的数据(例如,显示通知)
  2. 长轮询 - 您发送与上述相同的请求.但...
    • 在此,请求的PHP文件进入无限循环,持续检查DB.
    • 当DB更改时,PHP文件"回显"它并结束循环.现在请求已完成,并在浏览器中接收数据.
    • 您处理数据.
    • 启动另一个长轮询Ajax请求,并再次重复这些步骤.
    • (额外:如果PHP未在特定超时时间内完成,则中止当前请求并启动新请求.)

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

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

我希望这对你有一个明确的想法!