TsgcWSHTTPWebBrokerBridgeServer maakt gebruik van TIdHttpWebBrokerBridge als serverbasis en is handig als u één enkele server wilt gebruiken voor DataSnap-, HTTP- en WebSocket-verbindingen.
TsgcWSHTTPWebBrokerBridgeServer erft over van TsgcWebSocketHTTPServer, zodat u naar deze server kunt verwijzen.
Volg de volgende stappen om TIdHttpWebBrokerBridge te vervangen door TsgcWSHTTPWebBrokerBridgeServer:
1. Maak een nieuw exemplaar van TsgcWSHTTPWebBrokerBridgeServer.
2. Vervang alle aanroepen naar TIdHttpWebBrokerBridge door TsgcWSHTTPWebBrokerBridgeServer.
3. Om WebSocket-verbindingen te verwerken, raadpleeg TsgcWebSocketHTTPServer.
De Datasnap-componenten bevinden zich alleen in de map Source; u vindt ze niet in de gecompileerde mappen omdat deze objecten niet zijn opgenomen in het sgcWebSockets-pakket, dus u moet ze tijdens runtime aanmaken.
Voeg gewoon de vereiste bestanden toe aan uw project of stel uw pad in op de Source-map van het sgcWebSockets-pakket. Vereiste bestanden:
Als het project gebruikmaakt van IdHTTPWebBrokerBridge, wijzig dit dan naar sgcIdHTTPWebBrokerBridge (dit geldt alleen voor de Enterprise Edition).
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;
Als de server zich achter de TsgcWebSocketLoadBalancerServer bevindt, kunt u CORS-problemen ondervinden; gebruik de volgende code om deze problemen te vermijden
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;