TsgcWebSocketLoadBalancerServer › Événements › OnLoadBalancerHTTPRequest
Se déclenche pour chaque requête HTTP entrante reçue par l'équilibreur de charge avant d'être transmise au serveur backend sélectionné.
property OnLoadBalancerHTTPRequest: TsgcWSLBHTTPRequestEvent;
// TsgcWSLBHTTPRequestEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; aForward: TsgcWSServerForwardHTTP) of object
—
OnLoadBalancerHTTPRequest est déclenché pour chaque requête HTTP acceptée par le répartiteur de charge (lorsque LoadBalancer.Protocols.HTTP est True) immédiatement avant qu'elle soit transmise à un serveur backend. ARequestInfo expose la requête entrante (Document, Params, RawHeaders, ContentType, PostStream) et aForward porte le plan de transmission : ses propriétés Host, Port et SSL peuvent être réécrites pour cibler un backend différent, un chemin URL différent (aForward.Document), ou pour activer/désactiver TLS. Définissez aForward.Handled := True pour ignorer complètement la transmission et répondre vous-même au client via Connection. Les usages typiques sont les règles de routage personnalisées, la réécriture de requêtes, l'injection d'en-têtes ou les réponses en processus pour les points de terminaison de santé.
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;