TsgcWebSocketLoadBalancerServerÉvénements › OnLoadBalancerHTTPResponse

OnLoadBalancerHTTPResponse Event

Se déclenche après que l'équilibreur de charge a reçu la réponse HTTP du serveur dorsal et avant qu'elle ne soit retournée au client aval.

Syntaxe

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

Valeur par défaut

Remarques

OnLoadBalancerHTTPResponse est déclenché une fois que le backend a répondu à une requête HTTP transmise, ou lorsque la transmission a échoué. ARequestInfo est la requête originale et AResponseInfo transporte la réponse du backend (ResponseNo, ContentText/ContentStream, en-têtes personnalisés) qui peut encore être modifiée avant d'être renvoyée au client aval. E est l'exception levée lors de la transmission (nil lorsque l'échange a réussi) ; lorsque E est assigné, vous pouvez créer une réponse d'erreur personnalisée en définissant les champs d'AResponseInfo. Les usages typiques sont l'ajout d'en-têtes de réponse de sécurité, la réécriture des en-têtes Location pour les scénarios de proxy inverse, la collecte de métriques de latence, ou la transformation d'un échec backend en une page HTTP 502 personnalisée.

Exemple


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;

Retour aux événements