5

Redis からリアルタイム データ (グラフなど) を表示するアプリケーションを開発しています。更新されたデータは非常に迅速 (ミリ秒) に Redis に送信されます。したがって、できるだけ頻繁に更新を表示することは理にかなっています (人間の目が気付くことができる限り)。

技術スタック:

  • Web サーバーとしての Node.js
  • データを保持するRedis
  • クライアントとしての JavaScript/HTML (AngularJS)

現在、クライアント側のポーリングがあります (更新のために Redis にクエリを実行する Node.js サーバーへの GET リクエストが毎秒行われます)。

代わりにサーバー側のポーリングを行い、WebSocket を介して更新を公開する利点はありますか? クライアントのクエリが異なる可能性があるため、すべての WebSocket 接続には個別の Node.js ポーリング (setInterval) が必要です。ただし、100 を超える WebSocket 接続があることは想定されていません。

これら2つのアプローチの間に長所/短所はありますか?

4

1 に答える 1

5

私があなたの質問を正しく理解していれば、リソースを同時に使用する予定のユーザーが 100 人未満であり、更新を提供するためのより良い方法を見つけたいと考えています。

  • クライアントはタイムアウト リクエストを通じて更新を要求します (1 秒あたり 1 回)
  • サーバーはクライアントを追跡し、更新があるたびにクライアントに更新を発行します。

最善の解決策は、所有しているデータと、ユーザーがこのデータを取得することがどれほど重要であるかに依存すると思います。

次の場合、クライアント側を使用します。

  • データが少し古くても気にしない
  • この 1 秒間に約 1 回以上の更新が行われます。
  • コードを修正する時間がない

次の場合、サーバー側を使用します。

  • 最新のデータを保持することが重要であり、ユーザーはラグを許容できません
  • 更新はそれほど頻繁ではありません (たとえば、更新が 1 分間に 1 回だけの場合、クライアント側の要求の 60 分の 1 だけが役に立ちます。ここでは、サーバーは更新を 1 回だけ発行します)。

1 つの良い点は、node.js には、この目的のために優れたsocket.ioライブラリが既にあることです。

于 2013-11-03T03:31:51.450 に答える