WAMP | Eenvoudige RPC

Het meest gebruikelijke gebruik van de WAMP-component is dat een client een methode opvraagt bij de server en de server een antwoord naar de client stuurt. De client kan alleen de naam van de methode verzenden en/of enkele vereiste parameters doorgeven die de server nodig heeft om het resultaat te berekenen. De server verwerkt verzoeken en stuurt bij succes een antwoord met het resultaat naar de client. Als er een fout is, stuurt de server een foutantwoord naar de client.

Zoals u ziet, is er slechts één verzoek en één antwoord (succesvol of niet).

 

Voorbeeld: de server heeft een methode genaamd GetTime, zodat elke keer dat een client deze methode opvraagt, de server de servertijd retourneert.

 

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