6

Facebookのようなプッシュ通知システムを作りたいです。Facebook があなたに何かを伝えたい場合 (誰かが投稿にコメントした、あなたにタグを付けたなど)、画面の左下隅に小さな通知が表示されます。フェードインとフェードアウトです。

このようなシステムを jQuery と Rails で構築するにはどうすればよいですか? それはどのように機能しますか?JS は常にサーバーに「新しい通知はありますか?」と尋ねます。または、サーバーが何らかの方法でこのサービスにプッシュしますか。

現在、ユーザーが別のユーザーにメッセージを送信した場合 (たとえば)、「新しいメッセージがあります」という通知をユーザーのキューに追加できますが、ページをリロードするまで表示されません...

4

3 に答える 3

6

Juggernautは本当にクールに見えます。ずっと前にデモを見ましたが、今は node.js の上に書き直されています。良い。redis と node.js をインストールし、node.js サーバーを実行する必要があり、残りは非常に簡単です。

Pusherapp.com もクールに見えますが、有料ですが、少なくとも追加のサービスをインストールして実行する必要はありません (デーモン化、スケーリングなど)。

ただし、負荷が大きすぎない場合は、物事をシンプルに保ち、javascript を使用してポーリングすることをお勧めします。独自のプラグインを簡単に作成できますが (それほど難しくありません)、jquery 用の非常に優れたプラグインが既にいくつか存在します。たとえばPeriodicalUpdater

于 2011-01-20T11:06:29.583 に答える
4

現在、Comet を使用することで、このような問題を解決できます。

詳細については、http://en.wikipedia.org/wiki/Comet_(プログラミング)

基本的に、ブラウザーはステートレス プロトコルである HTTP を使用します。HTTP はリクエストとレスポンスのような方法でのみ機能するため、実際のプッシュ通知を実際に取得することはできません。ブラウザにプッシュしたいときは、何らかの方法で TCP/Socket のような接続を模倣してブラウザにプッシュする必要があります。コメットは、そのような技術を定義するために使用される単なる用語です。

this.eg に役立つ多くのライブラリがあります:- Orbited、Juggernaut on rails。

新しいブラウザーには Websockets Protocol と呼ばれるものがあり、私が言及したライブラリーもこれを利用しています。膨大なトピックですが、Juggernaut と Rails を使用した基本的な例をいくつか見つけることができると確信しています。

http://pusherapp.comもあり、同じことを行いますが、料金がかかります。

于 2011-01-20T09:07:33.410 に答える
2

多くのサイトがこのような機能を実現するもう 1 つの方法は、bosh、または同期 http を介した双方向ストリームです。

http://en.wikipedia.org/wiki/BOSH

以下は、数少ない JavaScript ライブラリの 1 つです。

http://code.stanziq.com/strophe/

このタイプのセットアップでは、バックエンドに xmpp/bosh サーバーが必要ですが、基本的にブラウザーは接続を開いたままにし (comet と非常に似ています)、メッセージがブラウザーに着信するとそれらを処理します。

この手法は、通知、チャット、およびリアルタイムで発生させたいほぼすべてのことに使用できます。

于 2011-01-20T16:39:22.870 に答える