2012-03-03 3 views
0

現在のWebアプリケーションでは、ページ全体のリフレッシュ(他のページへのリンクなど)ではなく、ページ・セクションのリフレッシュに対応するためにUIを変更できません。最終的にこれは非更新divに配置されますが、今のところページリンクはWebワーカーを破壊/作成し、強制的に新しいソケット接続を作成します。 Socket.IOを使用して新しいソケット接続を作成する必要があるとき、システム上のドレインは何ですか?ページがリフレッシュされるとNodeJS/Socket.IOの使用が無効になり、新しい接続を作成する際にサーバーに多量の電力が消費されますか?

ページ全体がリフレッシュされることを考えれば、これはまだまだ良い解決策ですか?

- UPDATE -

このため、アプリケーションが「友人」のログインなどのシステムベースのプッシュ通知のためである、など私はチャット環境でのプライベートメッセージに似たものとしてこれを参照してください。私はこれらのイベントを放送したいと思っていて、クライアント側は誰が実際にアップデートを見るかを管理します。それを行う正しい方法のように聞こえるか?

答えて

2

ここには多くの要素があります。私はそれらのいくつかをリストアップします:

  1. 何ブラウザが使用するユーザーで、自分のシステムがどのようなものでしょうか?

    一部のブラウザおよび低速のマシンでは、ソケットを開くためにより多くのオーバーヘッドが必要になります。つまり、現代のマシンと接続では、これはかなり限界があるはずです。

  2. どのトランスポートを有効にしていますか?

    WebSocket、XHRポーリング、JSONPポーリング、さらにはFlashなど、configure Socket.IO to use many different types of transportsを使用できます。どのトランスポートが実際に使用されるかは、設定​​した内容とユーザーのブラウザがサポートしている内容に基づいています。

    Flash(既定では無効)などの一部のトランスポートでは、明らかにセットアップにかかるオーバーヘッドが大幅に増加します。 XHRポーリングのような他のものは、本質的に非効率ですが、とにかく複数のポーリング要求を行っているため、新しいページ要求の影響をほとんど受けません。

  3. Socket.IO接続が確立され、切断が発生したときは何をしていますか?

    これらのシナリオのいずれかで重大な問題が発生した場合、頻繁な再接続が問題になります。それは、XHRのポーリングをかなり殺してしまうので、実際にはコネクションに多大な負担をかけてはいけません。

  4. これらのページの更新頻度はどのくらいですか?

    ユーザーがリンクをクリックしたときにのみ、時々ですか?それとも、ページを頻繁にリフレッシュさせるようなものがありますか?

  5. サーバーにはどのようなハードウェアと接続がありますか?

    これは修正が難しいかなり大きな変数です。

私はあなたに決定的な答えを与えることはできませんが、あなたのシナリオについて考えて最適化するのに役立ちます。一般に、新しいソケットをかなり頻繁に作成することは問題ではありませんが、ロードまたはストレステストを実行して、特定のシステムが処理できることを確認することをお勧めします。

+0

グレートランダウン、ありがとうございました。私は何かを明確にする必要がある。関連するクライアントにシステムアクティビティについて通知する必要があります。彼らはシステムが最後のチェックから更新のためにdbテーブルをチェックする時限要求(5秒ごと - ポーリング/プル)を行うことができます。しかし、プッシュについては少し不明です。私は、すべての新しいシステムイベントをすべてのクライアントにプッシュする(プルと同様にメインイベントテーブルのルックアップは必要ない)と、関連するクライアントから通知を表示したいと思うだろう。これは非WebSocket XMPPでどのように処理されますか?どちらがベストですか/お勧めですか?これをシステムに反映させるために上記で更新されました。 – ElHaix

関連する問題