TsgcWebSocketLoadBalancerServerイベント › OnLoadBalancerHTTPResponse

OnLoadBalancerHTTPResponse イベント

ロードバランサーがバックエンドから HTTP 応答を受信した後、ダウンストリームクライアントに返される前に発火します。

構文

property OnLoadBalancerHTTPResponse: TsgcWSLBHTTPResponseEvent;
// TsgcWSLBHTTPResponseEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object

デフォルト値

解説

OnLoadBalancerHTTPResponse は、バックエンドが転送された HTTP リクエストに応答した後、または転送が失敗した後に発生します。ARequestInfo は元のリクエストで、AResponseInfo にはバックエンドからのレスポンス(ResponseNo、ContentText/ContentStream、カスタムヘッダー)が含まれており、ダウンストリームクライアントに書き戻される前に変更できます。E は転送中に発生した例外です(交換が成功した場合は nil)。E が割り当てられている場合は、AResponseInfo フィールドを設定することでカスタムエラーレスポンスを構築できます。典型的な使用例は、セキュリティレスポンスヘッダーの追加、リバースプロキシシナリオのための Location ヘッダーの書き換え、レイテンシメトリクスの収集、バックエンド障害をカスタム HTTP 502 ページに変換することなどです。

使用例


procedure OnLoadBalancerHTTPResponse(Sender: TObject; Connection: TsgcWSConnection;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception);
begin
  if Assigned(E) then
  begin
    AResponseInfo.ResponseNo := 502;
    AResponseInfo.ContentText := 'Backend unavailable: ' + E.Message;
  end
  else
    AResponseInfo.CustomHeaders.Add('X-LoadBalancer: sgcWebSockets');
end;

イベントに戻る