TsgcWebSocketLoadBalancerServer › Gebeurtenissen › OnLoadBalancerHTTPResponse
Wordt gegenereerd nadat de load balancer de HTTP-respons van de backend heeft ontvangen en voordat deze naar de downstream-client wordt geretourneerd.
property OnLoadBalancerHTTPResponse: TsgcWSLBHTTPResponseEvent;
// TsgcWSLBHTTPResponseEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object
—
OnLoadBalancerHTTPResponse wordt geactiveerd zodra de backend een doorgestuurde HTTP-aanvraag heeft beantwoord, of wanneer het doorsturen is mislukt. ARequestInfo is de oorspronkelijke aanvraag en AResponseInfo bevat het antwoord van de backend (ResponseNo, ContentText/ContentStream, aangepaste headers) dat nog kan worden gemuteerd voordat het terug naar de downstream-client wordt geschreven. E is de uitzondering die tijdens het doorsturen is gegenereerd (nil wanneer de uitwisseling is geslaagd); wanneer E is toegewezen, kunt u een aangepast foutantwoord bouwen door velden van AResponseInfo in te stellen. Typische toepassingen zijn het toevoegen van beveiligingsantwoordheaders, het herschrijven van Location-headers voor reverse-proxy-scenario's, het verzamelen van latentiemetrieken, of het omzetten van een backendfout in een aangepaste HTTP 502-pagina.
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;