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 应用验证手机号码
即时游戏广告不起作用 - showAsync' 为 null