1

ロング ポーリングにより、問題の 99% が解決されました。もう1つだけ問題があります。人々が入札するペニー オークション サイトを想像してみてください。フロントページには、いくつかのオークションがあります。

ユーザーがこれらのオークションのうち 3 つを開いた場合、JavaScript はマルチスレッド化されていないため、他のページをロードするにはどうすればよいでしょうか? 長いポーリングが終了するのを待っているため、常に動かなくなってロードされないのではないでしょうか? 実際、私はこれを経験しましたが、それを回避する方法は考えられません。何か案は?

4

1 に答える 1

0

JavaScript がこれを回避する方法は 2 つあります。

  1. JavaScript は概念的にはシングル スレッドですが、完了ハンドラーを使用して別のスレッドで io を実行します。これは、ネットワーク リクエストが完了するのを待っている間、JavaScript の他の部分を実行できることを意味します。
  2. 各ページ (または各ページの各フレーム) の Javascript は、他のページ/フレームの Javascript から分離されています。これは、javascript の各コピーを独自のスレッドで実行できることを意味します。

あなたにとってより大きな問題は、ブラウザが特定のサイトへの同時接続数を制限することが多いことであり、同じサイトへの同時接続を多数作成したいようです。この場合、ロックアップされます。

サーバーとクライアントの両方を制御する場合は、クライアントからの複数のロング ポール リクエストをサーバーへの 1 つのロング ポール リクエストに結合する必要があります。

于 2013-03-11T07:13:44.170 に答える