0

クライアント側(ブラウザ)へのサーバープッシュを行うさまざまな方法を読んでいます。これらの中から最良のアプローチを理解したいと思います。

  1. 長いポーリング -- サーバー側でリソースをより長く保持するため、避ける必要があります。
  2. コールバックを使用したノード JS 非同期委任。--シングル スレッドであることの短所。
  3. java でコールバックを記述し、スレッドを使用してバックグラウンドでタスクを実行し、後でコールバックを使用して node.js のようにサーバーにプッシュします。

ここでの利点は、複数のスレッドを並行して実行し、CPU を効率的に使用できることです。

誰でも実装の最良の方法を提案できますか? 他の方法も大歓迎です。

4

1 に答える 1

0

あなたはいくつかのことを誤解しているようです。たとえば、ロングポーリングをサーバー側のテクノロジーと比較することはできません。

ロング ポーリングとは、クライアント (ブラウザなど) がサーバーに対して AJAX 要求を行うことを意味します。その後、サーバーは通知があるまでそのリクエストを保持します。次に、その要求に応答し、クライアントは更新を受信した後、すぐに新しい AJAX 要求でサーバーを呼び出します。

サーバー側で処理したい技術を選択できます。人々はこれを念頭に置いて NodeJS を作成したので、そのために使用することをお勧めします。ただし、自分に合ったものを使用してください。

もう 1 つの誤解は、スレッドがパフォーマンスを向上させるため、シングル スレッド アプリケーションよりも優れているということです。実際には逆で、スレッドを使用するとパフォーマンスが低下します (ここでは、1 つのコア CPU で作業していると仮定しています)。スレッドは応答性を向上させますが、パフォーマンスは向上させません。ただし、実行しようとしていることが CPU を集中的に使用する場合、サーバーがブロックされるという問題があります (シングル スレッド アプリの場合)。ただし、単純な通知について話している場合、それはまったく問題ではありません (そのために CPU パワーは必要ありません)。補足: 複数のコアを利用するために、コアと同じ数の NodeJS のインスタンスを起動できます (ただし、もう少し複雑なコードが必要になります)。

また、WebSocket の使用を検討する必要があります (したがって、サーバー側に単純な TCP サーバーを実装します)。ロング ポーリングは非効率的であり、最新のブラウザーのほとんどは WebSocket をサポートしています (特に、IE では常に問題となっている IE10+)。

結論: サーバー側では、最も使い慣れたテクノロジを使用します。

于 2013-04-07T20:49:19.330 に答える