Facebook如何通知并立即显示新评论或Stackoverflow如何做到这一点?

Vin*_*hen 15 php database sockets node.js

我是一名PHP开发人员,标题基本上都说明了一切.然而,我希望得到一些更深入的信息,因为我开始对我工作的项目流程应该如何变得困惑.

对于(网络)应用程序,我需要实现像Facebook这样的功能,通知用户有关回复/评论并立即显示这些内容.

我想我可以使用ajax请求进行长轮询,但这似乎不是一个很好的解决方案,因为通知永远不会是即时的,而且资源很重.

如果我理解正确的话,我应该使用某种形式的套接字,而Node.Js将是一个不错的选择.因此,基于最后的假设,我现在对工作流程感到困惑.

我想到了两种可能的解决方案:

1)在我看来,如果我使用Node.Js,我可以完全跳过使用PHP并将应用程序基于Node.js.

2)或者我可以使用PHP作为基础,只使用Node.js通知用户并立即显示消息,但使用PHP和Mysql保存数据.

这两种可能性使我感到困惑,我无法决定什么是"最好"和最干净的方式.

我在Node.js上没有太多经验,玩了一段时间.但是在Node.js中管理和保存数据似乎很难,所以这就是我提出选项2的原因.

我知道Facebook是基于PHP的,所以我假设他们通过PHP保存数据并通过Node通知/立即显示回复和评论.

有人可以帮我解决这个问题吗?

提前致谢!

编辑: 我刚刚注意到,Stackoverflow做了类似的事情.我在左上方收到通知,在我的问题下面有一个"问题新答案"的方框.我对所使用的技术非常感兴趣.

x_m*_*ras 13

那么你可以使用node.js作为应用程序的通知和PHP.通过谷歌搜索我发现这是关于实时通知.您也可以将node.js与socket.io一起使用,但这意味着您必须学习新技术,因为您提到您没有使用node的经验.

我没有使用它,但你可以检查这个项目,对于PHP中的websockets.

如果您有要通知用户的更新,则可以使用发布订户模式通知此更新中的新功能.看看Gearman吧.

就个人而言,我使用redis的pubsub机制和node.js + socket.io 构建了一个通知系统.每当记录有更新时,就会在适当的频道上发布.如果频道有听众,那么他们会收到通知.我还将最后20个通知存储在Redis列表中.

应用程序是用PHP构建的.通知系统内置于node.js. 它们是看到相同数据的不同应用程序.通过redis进行通信.例如,在Facebook上下文中:1)用户更新其状态.2)PHP将此存储到数据库和Redis 3)Redis知道此更新必须发布到特定用户的状态通道,并且确实如此.4)特定用户的所有朋友都在监听他的状态通道(这里是node.js)5)Node.js使用socket.io在浏览器中推送通知

至于Facebook,我读过一篇使用长轮询支持旧版浏览器的文章.虽然不确定,需要引用...