WAMP | Simple RPC

L'utilisation la plus courante du composant WAMP consiste pour un client à demander une méthode au serveur, et le serveur envoie une réponse au client. Le client peut n'envoyer que le nom de la méthode et/ou passer des paramètres requis par le serveur pour calculer le résultat. Le serveur traite les requêtes et, en cas de succès, envoie une réponse au client avec le résultat. En cas d'erreur, le serveur envoie une réponse d'erreur au client.

Comme vous pouvez le voir, il n'y a qu'une seule requête et une seule réponse (réussie ou non).

 

Exemple : le serveur a une méthode appelée GetTime, donc chaque fois qu'un client demande cette méthode, le serveur retourne l'heure du serveur.

 

Serveur WAMP

 


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;

Client WAMP

 


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