TsgcWSHTTPWebBrokerBridgeServer

TsgcWSHTTPWebBrokerBridgeServer verwendet TIdHttpWebBrokerBridge als Server-Basis und ist nützlich, wenn Sie einen einzelnen Server für DataSnap-, HTTP- und WebSocket-Verbindungen verwenden möchten.

 

TsgcWSHTTPWebBrokerBridgeServer erbt von TsgcWebSocketHTTPServer, sodass Sie sich auf diesen Server beziehen können.

 

Befolgen Sie die nächsten Schritte, um TIdHttpWebBrokerBridge durch TsgcWSHTTPWebBrokerBridgeServer zu ersetzen:

 

1. Erstellen Sie eine neue Instanz von TsgcWSHTTPWebBrokerBridgeServer.

 

2. Ersetzen Sie alle Aufrufe von TIdHttpWebBrokerBridge durch TsgcWSHTTPWebBrokerBridgeServer.

 

3. Um WebSocket-Verbindungen zu behandeln, beziehen Sie sich einfach auf TsgcWebSocketHTTPServer.

 

Konfiguration

Die Datasnap-Komponenten befinden sich nur im Source-Ordner, Sie finden sie nicht in den kompilierten Ordnern, da diese Objekte nicht im sgcWebSockets-Paket enthalten sind, sodass Sie sie zur Laufzeit erstellen müssen.

Fügen Sie einfach die erforderlichen Dateien zu Ihrem Projekt hinzu oder setzen Sie Ihren Pfad auf den Source-Ordner des sgcWebSockets-Package. Erforderliche Dateien:

 

 

Wenn das Projekt IdHTTPWebBrokerBridge verwendet, wechseln Sie zu sgcIdHTTPWebBrokerBridge (dies gilt nur für die Enterprise Edition).

 

Ereignisse


FServer := TsgcWSHTTPWebBrokerBridgeServer.Create(Self);
FServer.OnCommandRequest := OnCommandRequestEvent;
FServer.OnCommandGet := OnCommandGetevent;
  
procedure OnCommandRequestEvent(AThread: TIdContext; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var aHandled: Boolean);
begin
  if ARequestInfo.Document = '/test.html' then
    aHandled := True;
end;
 
procedure OnCommandGetevent(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo);
begin
  if ARequestInfo.Document = '/test.html' then
  begin
    AResponseInfo.ResponseNo := 200;
    AResponseInfo.ContentText := 'hello all';
  end;
end;

Load Balancer

Wenn sich der Server hinter dem TsgcWebSocketLoadBalancerServer befindet, können CORS-Probleme auftreten; um diese Probleme zu vermeiden, verwenden Sie den folgenden Code

 


procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.SetCustomHeader('Access-Control-Allow-Origin','*');        
  if Trim(Request.GetFieldByName('Access-Control-Request-Headers')) <> '' then 
  begin 
    Response.SetCustomHeader('Access-Control-Allow-Headers', Request.GetFieldByName('Access-Control-Request-Headers'));        
    Handled := True;
  end;
  if FServerFunctionInvokerAction <> nil then
    FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker;
end;