TsgcWebSocketLoadBalancerServer › Zdarzenia › OnLoadBalancerHTTPRequest
Wywoływane dla każdego przychodzącego żądania HTTP odebranego przez moduł równoważenia obciążenia przed jego przekazaniem do wybranego serwera backendowego.
property OnLoadBalancerHTTPRequest: TsgcWSLBHTTPRequestEvent;
// TsgcWSLBHTTPRequestEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; aForward: TsgcWSServerForwardHTTP) of object
—
OnLoadBalancerHTTPRequest jest wywoływane dla każdego żądania HTTP zaakceptowanego przez moduł równoważenia obciążenia (gdy LoadBalancer.Protocols.HTTP ma wartość True) bezpośrednio przed przekazaniem go do serwera zaplecza. ARequestInfo udostępnia przychodzące żądanie (Document, Params, RawHeaders, ContentType, PostStream), a aForward zawiera plan przekazywania: jego właściwości Host, Port i SSL można nadpisać, aby kierować do innego zaplecza, innej ścieżki URL (aForward.Document) lub przełączać TLS. Ustawić aForward.Handled := True, aby całkowicie pominąć przekazywanie i samodzielnie odpowiedzieć klientowi przez Connection. Typowe zastosowania to niestandardowe reguły routingu, przepisywanie żądań, wstrzykiwanie nagłówków lub odpowiedzi przetwarzane wewnętrznie dla punktów końcowych zdrowotnych.
procedure OnLoadBalancerHTTPRequest(Sender: TObject; Connection: TsgcWSConnection;
ARequestInfo: TIdHTTPRequestInfo; aForward: TsgcWSServerForwardHTTP);
begin
// route /api/* to a different backend
if StartsText('/api', ARequestInfo.Document) then
begin
aForward.Host := '10.0.0.10';
aForward.Port := 9000;
end;
end;