2012-07-10 46 views
18

我正在構建一個社交應用程序,並想知道Facebook如何實現他們的通知。如你所知,facebooks通知是即時的。只要有人採取行動,人們就會收到通知。類似Facebook的即時通知

我假設他們一直沒有在數據庫上運行查詢。

有人可以指出我在正確的方向。謝謝

+1

由於存在大量替代品,這個問題相當開放。 你需要一些東西來允許服務器推送到客戶端。 [StackOverlow老問題與信息](http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client) – 2012-07-10 08:50:14

回答

25

由於您的問題標有C#,ASP.NET,您應該使用真棒SignalR庫。基本上SignalR可以讓你發送推送通知給客戶端。它使用的確切底層技術受服務器和客戶端功能的影響。

有一個叫jabbR一個很大的實時聊天網站,是建立SignalR之上:

http://jabbr.net/

這裏有一些更多的聯繫,應該讓你開始。

8

Facebook使用稱爲Thrift的消息協議(它設計的)。這允許客戶端以非常低的延遲通知服務器。我會想象服務器上的更新會根據用戶操作而被觸發,並且相同的機制會通知登錄的相關用戶。

使用諸如節儉之類的消息傳遞協議(請參閱Protocol buffers),客戶端不必輪詢服務器以獲取更新,而是服務器可以將通知推送給客戶端。要做到這一點,服務器需要有一個關於誰在任何時候登錄的概念(登錄,註銷握手),以及誰應該接收來自特定客戶端操作的通知。

說起來容易做起來難,特別是當您有8億潛在用戶登錄時!

0

你可能想看看http://nodejs.org/ - 這是一個事件驅動的模式,非常適合「社交網絡」/即時通知場景。

僅供參考:您可能會發現,使用非SQL數據庫(例如MongoDB(http://www.mongodb.org/))在查詢數據庫時會快很多,因爲每個'person'對象都在社交網絡場景具有他/她自己的獨特屬性 - 在正常的SQL數據庫中很難設計。