質問
AJAXを使用して、レールにスケーラブルなチャットルームを実装したいと思います。調査から、サーバー側のプッシュでのみスケーラビリティが発生することがわかっています。
私の2つの質問は次のとおりです。
1)合理的に効率的なチャットサーバーでは、どの時点でポーリングが禁止されますか? 2)Juggernautを使いたくありません。私は彗星がどのように機能するかについてあまり知りません。 Javascript(クライアント側のサーバー/ポーラーを作成する)と別の言語(ファイアウォールの背後にあるクライアントに効率的なポーリングを提供し、CGIに統合する)を使用してビルドするのがひどく難しいのではないかと思います。 および3)(はい、2つのうち)、それを正しい方法で進めているかどうか
私が期待できる最も簡単な答えは、定量化された「はい、クライアントに5行のJavascriptを入れ、CGIスクリプトに20行のルビーを入れて、それを1日と呼ぶことです」です。
解決
もしそれが簡単だったら、人々はそれらの技術を構築しなかっただろう。私見私は、ポーリングは常にそれを行うためのハックな方法になると思います。言った...
Juggernautがカードから外れている理由がわからない素晴らしい作品です。
WeeWar などの他のサイトはポーリングメソッドを使用していることを知っています。そのため、スケーリングが問題になるまでに時間がかかると思います。
幸運
乾杯
他のヒント
今も同じことをしようとしています。 Juggernautはうまく機能しますが、Rails 3には適していません。それが要件でない場合は、チャットを作成するのは非常に簡単なので、使用することをお勧めします。 私のプロジェクトはRails 3を使用し、3秒ごとにサーバーをポーリングします(Campfireも3を行います)。 Rails Metalを使用して、ポーリングを超高速にしています。 Juggernautを使用する場合は、2行のクライアントサイドjsと1または2のサーバーサイドを使用します。そうでなければ、仕事に取り掛かってください!
はい、5行のJavascriptをクライアントに、20行のルビーをCGIスクリプトに入れて、1日で呼び出します
COMETは、Javascriptでサーバーへの接続を開いたままにすることで機能します(COMET Webサイトでこの非同期データを取得する方法の例はたくさんあります)。サーバーは基本的にデータを書き込み、フラッシュします。これは、タイトなループでMutexを使用して実行できます。また、おそらく並べ替えのメッセージキューが必要になります。
長い間、 BOSH について学ぶ方が良いかもしれません。走る。それはCOMETからの自然な進行です。
Juggernautには学習曲線がありますが(実際にはそうではないかもしれませんが)、COMETの実行方法を学ぶことはより急勾配です。非同期プッシュだけでも難しくなります。それだけでなく、それをうまくスケールさせる方法を検討する必要があります。 Juggernautを使用したことはありませんが、RORプラグインに関する限り、それは些細なことだと思います。そして、彼らがそれをより良くする方法を見つければ、あなたは無料でより速いパフォーマンスを得ることができます。
ポーリングは技術的にはより簡単に機能する別のオプションですが、サーバーを殺す可能性があるため、ポーリングを使用しないことに情熱を注いでいます。ポーリングは怠zyなルートです。
Campfireはどうですか? 5秒ごとにサーバーをポーリングします。夢のように機能します。