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