TsgcWebSocketLoadBalancerServer › Olaylar › OnLoadBalancerHTTPRequest
Yük dengeleyici tarafından alınan her gelen HTTP isteği, seçilen arka uç sunucusuna iletilmeden önce tetiklenir.
property OnLoadBalancerHTTPRequest: TsgcWSLBHTTPRequestEvent;
// TsgcWSLBHTTPRequestEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; aForward: TsgcWSServerForwardHTTP) of object
—
OnLoadBalancerHTTPRequest, yük dengeleyici tarafından kabul edilen her HTTP isteği için (LoadBalancer.Protocols.HTTP True olduğunda) bir arka uç sunucusuna iletilmeden hemen önce tetiklenir. ARequestInfo, gelen isteği (Document, Params, RawHeaders, ContentType, PostStream) sunar ve aForward iletme planını taşır: Host, Port ve SSL özellikleri farklı bir arka ucu, farklı bir URL yolunu (aForward.Document) hedeflemek için veya TLS'yi değiştirmek için yeniden yazılabilir. İletmeyi tamamen atlamak ve istemciye Connection aracılığıyla kendiniz yanıt vermek için aForward.Handled := True olarak ayarlayın. Tipik kullanımlar özel yönlendirme kuralları, istek yeniden yazma, başlık enjeksiyonu veya sağlık endpoint'leri için işlem içi yanıtlardır.
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;