2012-03-23 5 views
1

私はRailsアプリを持っています(この場合は無関係かもしれませんが、とにかく言及します)。それはある種のチャットルームアプリケーションです。ポーリングの頻度が高いほど私のページがダウンしますか?

現在、どのユーザーがチャットルームにいるかを知るために、私はJavascriptポーリングを使用しています。

だから、簡単な

updateUsersだけのAJAXは現在、チャットルームでのユーザーの配列を引くための要求を取得する呼び出す
$(function() { 
    setTimeout(updateUsers, 15000); 
}); 

ここに私の質問があります.15秒は、投票するのを待つかなり長い時間です。パフォーマンスの問題がなくても、どのくらいの頻度でそれを行うべきですか?明らかにそれは多くの要因に依存しますが、私はこれらの要因を聞きたいと思います。私はチャットルームでメッセージを受信するのに似たような質問をたくさん見たことがありますが、ユーザーのリストはまだありません。そのため私はこの質問をしています。

答えて

0

インフラストラクチャや予想されるユーザーの数など、さまざまなものによって異なります。これらの数字があっても何が良いタイムアウトになるかは分かりません。

ユーザのリストで単純なJSON配列を送信するだけの場合は、実験を3〜5秒遅らせてそこから確認してください。これは早すぎる最適化の問題です。あなたがまだ持っていない問題を解決しようとしています。

あり、しかし、他の二つの可能な解決策は:

あなたは唯一の違いを送信することができます。ポーリングすると、最後にポーリングしたユーザーが接続しているメッセージと最後にポーリングしたメッセージが返されます。これにはある種のサーバートラッキングが必要ですが、実行することができます。

もう1つの解決策は、ポーリングをまったく使用せず、WebSockets/Long-pollingのような最新のテクノロジーを使用することです。それらはサーバ自身があなたのクライアントにメッセージを送ることを可能にします。そのため、接続時に初期リストを送信し、他の誰かが接続/退出するたびに1つの最小限のメッセージを送信することができます。ノード環境でのこれに対する優れた解決策はSocket.IOです。私はRubyの人ではないので、誰かが何か似たようなことをしているのかどうかはわかりませんが、誰かがRailsにすべて移植しても驚くことはありません。周囲を検索すると、あなたのニーズに合ったものを見つけることができます。

私はあなたがあなたには、いくつかの彗星技術

http://en.wikipedia.org/wiki/Comet_(programmingをすべきだと思う

0

サーバー、クライアント、またはその両方であっても、負荷が高いほど、負荷が増えます。

私は「スウィートスポット」(あなたが参照しているように見える)があるとは思わないと言います。ただし、基本的に常に接続を開いたままにして、必要なときにだけデータを送信するRuby Push APIを参照することができます。 (もう少し調べてみると、Juggernaut pluginもあるようです)

+0

ありがとうございました。私がポーリングを使用している理由は、実際には私がしばらく押しているのを避けたいからですが、助言に感謝します。 – varatis

0

))

または、平均応答時間を探して、間隔の動的変更をいくつかの機能を追加します。たぶん、サーバーはクライアントに "私はするべきことがたくさんある、次の要求まで30秒待ってください"と伝えることができます。

関連する問題