0

クライアントに継続的な更新を送信する必要があるという要件があります。この場合、クライアントはブラウザです。毎秒更新されるデータがあるため、クライアントがサーバーに接続すると、永続的な接続を維持し、データをクライアントにプッシュし続けます。

サーバー側でのこの実装の提案を探しています。基本的に必要なのはこれです: 1. クライアントがサーバーに接続します。ソケットとソケットに関するメタデータを維持します。メタデータには、このクライアントに送信する必要がある更新が含まれています。 2. サーバー プロセスは、新しいクライアント接続を待機します。

Apache モジュールで次のようなことができますか: 1. Apache プロセスが新しい接続を取得します。接続の状態を維持します。状態をグローバルメモリに保持し、ルートプロセスに戻って、新しい接続を受け入れることができるように完了したことを示しますグローバル ストアを経由し、更新がある場合はクライアントに送信します。

Apache プロセスは次のことを行うことができますか?

4

2 に答える 2

1

これは複雑で効率の悪い更新モデルです。サーバーは、閉じたクライアントを更新しようとします。また、サーバーはそのすべてのクライアント データとメタ データ (最終更新時刻など) を維持する必要があります。

通常、継続的な更新には ajax がポーリング モデルで使用されます。クライアントには、起動時に更新されたデータを提供するサービスにヒットする JavaScript タイマーがあります。クライアントは、Apache モジュールを作成しなくても、定期的に更新を取得し続けます。

このモデルはあなたのシナリオに適していますか?

Periodic_Refreshをプッシュする代わりにポーリングを選択するその他の理由

于 2010-05-04T02:36:57.833 に答える
0

SUSPENDED mpm_event 接続を再開するための小さなパッチにより、非同期 Apache モジュールが動作するようになりました。これにより、改善されたポーリングを実行できます。

  1. javascript は Apache に接続し、更新を要求します。
  2. 更新がない場合、モジュールはすぐに応答する代わりに SUSPENDED を使用します。
  3. しばらくして、更新またはタイムアウトが発生した後、コールバックがどこかで発生します。
  4. コールバックは、クライアントに更新 (または「更新なし」メッセージ) を提供し、接続を再開します。
  5. クライアントはステップ 1 に進み、Keep-Alive で同じ接続を使用するポーリングを繰り返します。

こうすることで、クライアントとサーバー間の往復回数を減らすことができ、クライアントはすぐに更新を受け取ります。(これは、コメットのリバース Ajax、AFAIK として知られています)。

于 2014-04-13T14:34:36.913 に答える