2

HTML5 の Server-sent-Events が適しているかどうかを知りたいユースケースがあります。

複数のクライアント (Javascript+HTML5 ブラウザー) が Web サーバーに接続します (Java EE バックエンドを使用)。各クライアントは、関心のあるオブジェクトに応じて、いつでも異なるビューを見ている可能性があります。

私の質問は次のとおりです。すべてのビューのすべての更新ですべてのクライアントをフラッディングせずに、サーバー側で発生する更新について複数のクライアント (異なるビュー) を最新の状態に保つ方法は?

私が考慮する必要がある重要な点は次のとおりです。

  1. 多くのクライアントが同じイベントに関心を持っている可能性があります。2 つのクライアントが同じビューを見ている場合、同じイベントを取得する必要があります。
  2. クライアントに送信されるイベントは、クライアントが現在表示されているビューによって異なります。
  3. 一部のクライアントは、どのイベントにも関心がない場合があります (つまり、静的データを表示している可能性があります)。
  4. 特定のクライアントが関心を動的に変化させる可能性があります。例: View1 を閉じて、View2 を開きます。
  5. クライアントは、複数のイベント チャネルに関心を持つ可能性があります (例: 動的に変化する 2 つのビューが 1 つのページの一部である可能性があります)。
  6. SSE を完全にサポートするブラウザーのみをターゲットにできます。
  7. サーバーに接続できるクライアント (ブラウザー) は常に最大 100 です。そのため、クライアントごとに (SSE 用に) 複数の接続を開いておく余裕がありました。

SO/Google で SSE を検索しましたが、製品品質のソフトウェアの信頼できるソリューションを (まだ) 入手できませんでした。SSE を完全に探索する前に、古いコメット手法に戻りたくありません。

SSE は (単独で) これらの要件を満たすことができますか? 私は現在 Atmosphere を検討していますが、SSE だけでは十分ではないと判断する前に、SSE を模倣するポリフィルに頼りたくありません。

これが不可能な場合に私が計画していること:
サーバーはすべてのイベントをすべてのクライアントにブロードキャストし、クライアントにそれを理解させることができます。これは、サーバーからクライアントへの不要なトラフィックが大量に発生し、クライアント コードが複雑になることを意味します。

4

2 に答える 2

2

最近のブラウザーの特定のセットをターゲットにできない限り、常に何らかのフォールバックをサポートする必要があります。雰囲気はそれに対する良い解決策のように見えます。

適切なイベントを適切なクライアントに送信することについて: Session オブジェクト (Atmosphere がセッションをサポートするように構成されていることの確認) または独自のマップのいずれかで、クライアントとその設定を追跡します。ここで概説されているように、Atmosphere で複数のセッション ブロードキャスターを作成できるようです

免責事項:私はこれを自分で使用したことはありません。

于 2013-03-30T07:33:11.260 に答える