TsgcWebSocketLoadBalancerServer事件 › OnLoadBalancerHTTPResponse

OnLoadBalancerHTTPResponse 事件

在负载均衡器从后端接收到 HTTP 响应之后、将其返回给下游客户端之前触发。

语法

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

默认值

备注

OnLoadBalancerHTTPResponse 在后端响应了转发的 HTTP 请求或转发失败时触发。ARequestInfo 是原始请求,AResponseInfo 携带来自后端的响应(ResponseNo、ContentText/ContentStream、自定义标头),在写回下游客户端之前仍可修改。E 是转发过程中引发的异常(成功时为 nil);当分配了 E 时,您可以通过设置 AResponseInfo 字段构建自定义错误响应。典型用途包括添加安全响应标头、重写反向代理场景的 Location 标头、收集延迟指标,或将后端故障转换为自定义 HTTP 502 页面。

示例


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;

返回事件