WAMP | RPC Semplice

L'uso più comune del componente WAMP è che un client richieda un metodo al server, e il server invii una risposta al client. Il client può inviare solo il nome del metodo e/o passare alcuni parametri richiesti dal server per calcolare il risultato. Il server elabora le richieste e, in caso di successo, invia una risposta al client con il risultato. In caso di errore, il server invia una risposta di errore al client.

Come può vedere, c'è solo Una richiesta e Una risposta (con esito positivo o negativo).

 

Esempio: il server ha un metodo chiamato GetTime, quindi ogni volta che un client richiede questo metodo, il server restituisce l'ora del server.

 

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