TsgcWebSocketLoadBalancerServer › Eventos › OnLoadBalancerHTTPResponse
Dispara depois que o balanceador de carga recebe a resposta HTTP do backend e antes de ela ser retornada ao cliente downstream.
property OnLoadBalancerHTTPResponse: TsgcWSLBHTTPResponseEvent;
// TsgcWSLBHTTPResponseEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object
—
OnLoadBalancerHTTPResponse é gerado assim que o backend respondeu a uma requisição HTTP encaminhada, ou quando o encaminhamento falhou. ARequestInfo é a requisição original e AResponseInfo carrega a resposta do backend (ResponseNo, ContentText/ContentStream, cabeçalhos personalizados) que ainda pode ser modificada antes de ser escrita de volta ao cliente downstream. E é a exceção gerada durante o encaminhamento (nil quando a troca foi bem-sucedida); quando E está atribuído, você pode construir uma resposta de erro personalizada definindo os campos de AResponseInfo. Usos típicos são adicionar cabeçalhos de resposta de segurança, reescrever cabeçalhos Location para cenários de reverse-proxy, coletar métricas de latência, ou transformar uma falha do backend em uma 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;