WAMP | Simple RPC

Die häufigste Verwendung der WAMP-Komponente besteht darin, dass ein Client eine Methode vom Server anfordert und der Server eine Antwort an den Client sendet. Der Client kann nur den Namen der Methode senden und/oder einige vom Server benötigte Parameter übergeben, um das Ergebnis zu berechnen. Der Server verarbeitet Requests und sendet bei Erfolg eine Antwort mit dem Ergebnis an den Client. Tritt ein Fehler auf, sendet der Server eine Fehler-Antwort an den Client.

Wie Sie sehen, gibt es nur eine Anfrage und eine Antwort (erfolgreich oder nicht).

 

Beispiel: Der Server hat eine Methode namens GetTime, sodass jedes Mal, wenn ein Client diese Methode anfordert, der Server die Serverzeit zurückgibt.

 

WAMP Server

 


procedure OnServerCall(Connection: TsgcWSConnection; const CallId, ProcUri, Arguments: string);
begin
  if ProcUri = 'GetTime' then
    oServerWAMP.CallResult(CallId, FormatDateTime('yyyymmdd hh:nn:ss', Now))
  else
    oServer.WAMP.CallError(CallId, 'Unknown method');
end;
oServer := TsgcWebSocketServer.Create(nil);
oServer.Port := 80;
oServerWAMP := TsgcWSPServer_WAMP.Create(nil);
oServerWAMP.OnCall := OnServerCallEvent;
oServerWAMP.Server := oServer;
oServer.Active := True;

WAMP Client

 


procedure OnCallResultClient(Connection: TsgcWSConnection; CallId, Result: string);
begin
  ShowMessage(Result);
end;
procedure OnCallErrorClient(Connection: TsgcWSConnection; const Error: string);
begin
  ShowMessage(Error);
end;
oClient := TsgcWebSocketClient.Create(nil);
oClient.Host := '127.0.0.1';
oClient.Port := 80;
oClientWAMP := TsgcWSPClient_WAMP.Create(nil);
oClientWAMP.OnCallResult := OnCallResultClient;
oClientWAMP.OnCallError := OnCallErrorClient;
oClientWAMP.Client := oClient;
oClient.Active := True;
// After client has connected, request GetTime from server
oClientWAMP.Call('GetTime');