TsgcWebSocketLoadBalancerServer › Zdarzenia › OnLoadBalancerHTTPResponse
Wywoływane po odebraniu przez load balancer odpowiedzi HTTP z backendu, przed przekazaniem jej do klienta końcowego.
property OnLoadBalancerHTTPResponse: TsgcWSLBHTTPResponseEvent;
// TsgcWSLBHTTPResponseEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object
—
Zdarzenie OnLoadBalancerHTTPResponse jest wywoływane po odpowiedzi backendu na przekazane żądanie HTTP lub gdy przekazanie nie powiodło się. ARequestInfo zawiera oryginalne żądanie, a AResponseInfo przenosi odpowiedź z backendu (ResponseNo, ContentText/ContentStream, niestandardowe nagłówki), którą można jeszcze zmodyfikować przed zapisem do klienta podrzędnego. E to wyjątek zgłoszony podczas przekazywania (nil w przypadku powodzenia wymiany); gdy E jest przypisany, można zbudować niestandardową odpowiedź błędu przez ustawienie pól AResponseInfo. Typowe zastosowania to dodawanie nagłówków odpowiedzi bezpieczeństwa, przepisywanie nagłówków Location w scenariuszach reverse-proxy, zbieranie metryk opóźnień lub zamiana błędu backendu na niestandardową stronę HTTP 502.
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;