TsgcWebSocketLoadBalancerServer › Eventos › OnLoadBalancerHTTPResponse
Se activa después de que el balanceador de carga recibe la respuesta HTTP del backend y antes de que se devuelva al cliente receptor.
property OnLoadBalancerHTTPResponse: TsgcWSLBHTTPResponseEvent;
// TsgcWSLBHTTPResponseEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object
—
OnLoadBalancerHTTPResponse se dispara una vez que el backend ha respondido a una solicitud HTTP reenviada, o cuando el reenvío ha fallado. ARequestInfo es la solicitud original y AResponseInfo contiene la respuesta del backend (ResponseNo, ContentText/ContentStream, cabeceras personalizadas) que todavía puede modificarse antes de ser enviada de vuelta al cliente descendente. E es la excepción producida durante el reenvío (nil cuando el intercambio fue exitoso); cuando E está asignado, puede construir una respuesta de error personalizada estableciendo los campos de AResponseInfo. Los usos típicos son añadir cabeceras de respuesta de seguridad, reescribir cabeceras Location para escenarios de proxy inverso, recopilar métricas de latencia, o convertir un fallo del backend en una página HTTP 502 personalizada.
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;