Facebook 等即时通知

Posted

技术标签:

【中文标题】Facebook 等即时通知【英文标题】:Instant notifications like Facebook 【发布时间】:2012-07-10 08:38:59 【问题描述】:

我正在构建一个社交应用程序,并且想知道 facebook 如何实现他们的通知。 如您所知,Facebook 通知是即时的。一旦有人采取行动,就会通知人们。

我假设他们没有一直在数据库上运行查询。

谁能指出我正确的方向。谢谢

【问题讨论】:

这个问题有点开放式,因为有很多选择。您需要一些东西来允许服务器推送到客户端。 StackOverlow old question with info 【参考方案1】:

由于您的问题是用 C#、ASP.NET 标记的,因此您应该使用很棒的 SignalR 库。基本上SignalR 使您能够向客户端发送推送通知。它使用哪种确切的底层技术受服务器和客户端功能的影响。

有一个名为 jabbR 的大型实时聊天网站建立在 SignalR 之上:

http://jabbr.net/

这里还有一些可以帮助您入门的链接。

项目地址:http://signalr.net/ 托管代码(开源):https://github.com/SignalR/SignalR 维基:https://github.com/SignalR/SignalR/wiki 使用它的项目:https://github.com/SignalR/SignalR/wiki/Projects-Using-SignalR

【讨论】:

【参考方案2】:

Facebook 使用称为Thrift 的消息传递协议(由它设计)。这允许从客户端到服务器的通知具有非常低的延迟。我想服务器上的更新将根据用户操作触发,并且登录的相关用户将通过相同的机制得到通知。

使用 thrift 等消息传递协议(另请参阅 Protocol buffers)客户端不必轮询服务器以获取更新,而是服务器可以向客户端推送通知。为此,服务器需要知道谁在任何时候登录(登录、注销握手)以及谁应该从特定客户端操作接收通知。

说起来容易做起来难,尤其是当您有 8 亿潜在用户登录时!

【讨论】:

【参考方案3】:

您可能想看看http://nodejs.org/ - 它是一个事件驱动模型,非常适合“社交网络”/即时通知场景。

仅供参考:您还可能会发现使用非 SQL 数据库(例如 MongoDB (http://www.mongodb.org/))从数据库查询时会快很多,因为社交网络中的每个“人”对象网络场景有他/她自己独特的属性——这在普通的 SQL 数据库中很难设计。

【讨论】:

以上是关于Facebook 等即时通知的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 即时验证未通过 Facebook 应用验证手机号码

python Facebook即时文章API

即时游戏广告不起作用 - showAsync' 为 null

在 facebook 上显示从 google play store 弹出的即时安装

实现iOS端即时通讯开发的高性能消息推送

Authorize.Net 上的 IPN(即时付款通知)就像 Paypal 一样