TsgcWebSocketLoadBalancerServer › Ereignisse › OnLoadBalancerHTTPRequest
Wird für jede eingehende HTTP-Anfrage ausgelöst, die vom Load Balancer empfangen wird, bevor sie an den ausgewählten Backend-Server weitergeleitet wird.
property OnLoadBalancerHTTPRequest: TsgcWSLBHTTPRequestEvent;
// TsgcWSLBHTTPRequestEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; aForward: TsgcWSServerForwardHTTP) of object
—
OnLoadBalancerHTTPRequest wird für jede vom Load Balancer akzeptierte HTTP-Anfrage ausgelöst (wenn LoadBalancer.Protocols.HTTP True ist), unmittelbar bevor sie an einen Backend-Server weitergeleitet wird. ARequestInfo stellt die eingehende Anfrage bereit (Document, Params, RawHeaders, ContentType, PostStream) und aForward trägt den Weiterleitungsplan: Seine Eigenschaften Host, Port und SSL können umgeschrieben werden, um ein anderes Backend, einen anderen URL-Pfad (aForward.Document) anzusprechen oder TLS umzuschalten. Setzen Sie aForward.Handled := True, um die Weiterleitung vollständig zu überspringen und dem Client selbst über Connection zu antworten. Typische Anwendungsfälle sind benutzerdefinierte Routing-Regeln, das Umschreiben von Anfragen, das Einfügen von Headern oder In-Process-Antworten für Health-Endpunkte.
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;