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');