2012-07-10 12 views
18

私はソーシャルアプリケーションを構築していて、Facebookがどのように通知を受け取るのか不思議に思っていました。 ご存じのように、facebook通知は瞬時に行われます。誰かが行動を取るとすぐに、人々に通知されます。Facebookのようなインスタント通知

データベースで常にクエリが実行されていないと仮定します。

誰かが私を正しい方向に向けることができますか?ありがとう

+1

多量の選択肢があるので、質問はかなり自由です。 サーバーがクライアントにプッシュできるようにするには、何かが必要です。 [StackOverlowの古い質問と情報](http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client) –

答えて

25

あなたの質問はC#、ASP.NETでタグ付けされているので、素晴らしいSignalRライブラリを使用する必要があります。基本的にはSignalRを使用すると、プッシュ通知をクライアントに送信できます。それが使用する正確な基礎技術は、サーバーとクライアントの機能の影響を受けます。

SignalRの上に構築されてjabbRと呼ばれる大きなリアルタイムチャットサイトがあります:ここで

http://jabbr.net/

は、あなたが始める必要があるいくつかのより多くのリンクです。

8

FacebookはThriftというメッセージングプロトコルを使用しています。これにより、クライアントから非常に短い待ち時間のサーバへの通知が可能になります。私は、サーバ上のアップデートがユーザのアクションによって起動され、ログインしている関連ユーザが同じメカニズムによって通知されると思います。

thrift(Protocol buffersも参照)などのメッセージングプロトコルを使用すると、クライアントはサーバーを更新するためにポーリングする必要はなく、サーバーがクライアントに通知をプッシュできます。これを行うには、サーバはいつでもログインしているユーザ(ログイン、ログアウトハンドシェイキング)と、特定のクライアントアクションからの通知を受け取るユーザの概念を持つ必要があります。

簡単に言えば、特に8億人の潜在的なユーザーがログインしていると言われました!

0

あなたはhttp://nodejs.org/を見てみることをお勧めします - それは「ソーシャルネットワーク」/インスタント通知のシナリオに完全に理想的なイベントドリブンモデルです。

FYI:MongoDB(http://www.mongodb.org/)などの非SQLデータベースを使用すると、DBからクエリを実行するときに、ソーシャルネットワークのシナリオには、通常のSQLデータベースでは設計が難しい独自の属性があります。

関連する問題