TsgcWebSocketLoadBalancerServer › Events › OnLoadBalancerHTTPResponse
Si attiva dopo che il load balancer ha ricevuto la risposta HTTP dal backend e prima che venga restituita al client downstream.
property OnLoadBalancerHTTPResponse: TsgcWSLBHTTPResponseEvent;
// TsgcWSLBHTTPResponseEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object
—
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.
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;