TsgcWebSocketLoadBalancerServerZdarzenia › OnLoadBalancerHTTPResponse

OnLoadBalancerHTTPResponse Zdarzenie

Wywoływane po odebraniu przez load balancer odpowiedzi HTTP z backendu, przed przekazaniem jej do klienta końcowego.

Składnia

property OnLoadBalancerHTTPResponse: TsgcWSLBHTTPResponseEvent;
// TsgcWSLBHTTPResponseEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object

Wartość domyślna

Uwagi

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.

Przykład


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;

Powrót do Zdarzeń