TsgcWebSocketLoadBalancerServer › 이벤트 › 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;