TsgcWebSocketLoadBalancerServerEvents › OnLoadBalancerHTTPResponse

OnLoadBalancerHTTPResponse Evento

Si attiva dopo che il load balancer ha ricevuto la risposta HTTP dal backend e prima che venga restituita al client downstream.

Sintassi

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

Valore predefinito

Note

OnLoadBalancerHTTPResponse viene generato una volta che il backend ha risposto a una richiesta HTTP inoltrata, o quando l'inoltro è fallito. ARequestInfo è la richiesta originale e AResponseInfo contiene la risposta dal backend (ResponseNo, ContentText/ContentStream, intestazioni personalizzate) che può ancora essere modificata prima di essere scritta al client downstream. E è l'eccezione generata durante l'inoltro (nil quando lo scambio ha avuto successo); quando E è assegnato, è possibile creare una risposta di errore personalizzata impostando i campi di AResponseInfo. Gli utilizzi tipici includono l'aggiunta di intestazioni di risposta di sicurezza, la riscrittura delle intestazioni Location per scenari di reverse proxy, la raccolta di metriche di latenza, o la trasformazione di un fallimento del backend in una pagina HTTP 502 personalizzata.

Esempio


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;

Torna agli Eventi