サーバー送信イベントの API を構成する

この記事では、API Management でサーバー送信イベント (SSE) を実装する API を構成するためのガイドラインを示します。 SSE は、クライアントが接続を確立した後、HTTP を介してクライアントにデータを自動的にストリーミング (プッシュ) するための HTML5 EventSource 標準に基づいています。

ヒント

API Management では、クライアントとサーバー間で 1 つの持続的な双方向接続を維持する WebSocket API もネイティブでサポートされています。

前提条件

可用性

重要

この機能は、API Management の PremiumStandardBasicDeveloper レベルで使用できます。

SSE のガイドライン

API Management を使って、SSE を実装するバックエンド API に接続する場合は、次のガイドラインに従ってください。

  • 実行時間の長い HTTP 接続用のサービス レベルを選ぶ - SSE は実行時間の長い HTTP 接続に依存します。 実行時間の長い接続は、専用の API Management レベルではサポートされていますが、従量課金レベルではサポートされていません。

  • アイドル状態の接続を維持する - クライアントとバックエンド間の接続が 4 分以上アイドル状態になる可能性がある場合、接続を維持するメカニズムを実装してください。 たとえば、接続のバックエンドで TCP keepalive シグナルを有効にするか、少なくとも 4 分に 1 回クライアント側からトラフィックを送信します。

    この構成は、API Management インフラストラクチャで使われている、Azure Load Balancer で適用されるアイドル セッション タイムアウトの 4 分間をオーバーライドするために必要です。

  • イベントをクライアントに直ちに中継する - forward-request ポリシーで応答バッファーリングをオフにして、イベントがクライアントに直ちに中継されるようにします。 次に例を示します。

    <forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
    
  • 応答をバッファーリングする他のポリシーを避ける - validate-content などの特定のポリシーは応答内容をバッファーリングすることもあるため、SSE を実装する API と共に使わないでください。

  • 応答キャッシュを無効にする - クライアントへの通知がタイムリーに機能するように、応答キャッシュが有効になっていないことを確認します。 詳細については、「API Management のキャッシュ ポリシー」を参照してください。

  • 負荷をかけて API をテストする - 一般的な方法に従って、負荷をかけて API をテストし、運用環境に移行する前にパフォーマンスや構成の問題を検出します。

次のステップ

  • API Management の構成ポリシーの詳細について理解します。
  • API Management の容量について理解します。