如何建立像facebook这样的实时推送通知功能呢?

时间:2012-09-21 17:59:21

标签: facebook notifications push

我将为我的网络应用程序(一个小型​​社交网络)构建实时推送通知功能,我不知道从哪里开始。

这就是我想要构建的:有像按钮,评论表单,...用户点击喜欢,写下他们的评论和(相对)立即,在所有者的浏览器上显示新的喜欢和评论的数量,..这样的事情。

我在nodeJs上看过socketIo,MeteorJS但不幸的是,他们需要现代浏览器支持的WebSocket。我刚刚读到了关于Comet技术的内容,发现它很容易申请。但我不确定它会表现不错,因为Comet依赖于长轮询连接(如果我错了,请纠正我)。

此外,我认为Facebook正在使用Comet推送通知功能。通过firebug插件上的控制台选项卡,我可以看到总是持有与facebook的连接。 那么有人能给我看一个技术,一个模型来开发这样的功能吗?

4 个答案:

答案 0 :(得分:17)

一个有前途的想法是使用HTML5通知API;如果您希望通知在用户屏幕上弹出,只要他的浏览器正在运行(即使您正在浏览其他网站或所有窗口都已关闭),它也是完美的。

http://www.paulund.co.uk/html5-notifications

但是,如果你想要的是异步更新页面的不同部分(不刷新或按下按钮),你应该一起使用:

  • Ajax调用;
  • 听众和观察员。

当Ajax调用检索特定类型的json数据时(例如),它可以触发带有许多新通知的徽章(监听器)的外观,或者......

安装了JQuery后,你应该没问题......

尽管通常情况并非如此,但有时候,对于简单的调整,编写完成的工作更容易......

你可以从这里开始:

How implement a "observer" in Jquery without plugins?(虽然陈旧但很有趣)

或者看到这个页面:

browser instant updates with ajax/jquery

(令人难以置信的谷歌查询经常返回stacko'页面)

答案 1 :(得分:1)

你应该看看MQTT。它基本上适用于Publish-Subscribe模型,非常易于使用。该协议占用空间小,占用带宽较少。 Facebook的Messenger也使用MQTT。

答案 2 :(得分:0)

你可以使用ajax调用进入(例如)服务器上的php脚本,这样可以保持连接打开,只有在需要向用户显示某些内容时才会回复。如果在一定时间内没有任何事情发生,连接将被关闭,客户端将触发一个新的ajax调用。 请注意,这只会解决客户端/服务器通信问题,如果你想避免让脚本不断轮询数据库,你仍然需要服务器内部的通知方法唤醒php脚本,但是这里有很多灵魂来源。它们取决于您在服务器上使用的语言。

答案 3 :(得分:-2)

我有一个想法,它很简单,但它可能有用。为什么不将通知栏隐藏为Div标签并使用css进行设计以使其看起来像通知栏。然后每当某个用户喜欢或评论该页面时,编写php或js函数并将其连接到喜欢或评论提交按钮,这将显示页面所有者隐形div可见。而且我相信,根据你使用的内容,我可能更喜欢使用php session()识别页面所有者是否在线并且可以收到通知。此外,如果您需要跟踪页面的统计信息,您可以创建一个包含页面ID和用户注释的小型数据库。您可以使用此数据库在该隐藏的Div上推送多个通知。你可以使用Jquery让它像Facebook一样移动。我不是百分之百确定这是否是最优化的方式,但它是可能的。顺便说一句,我浏览了一些人,看看人们用它做什么。令人惊讶的是,我找不到一些东西。

相关问题