El uso más habitual del componente WAMP consiste en que un cliente solicite un método al servidor y el servidor envíe una respuesta al cliente. El cliente puede enviar solo el nombre del método y/o pasar algunos parámetros que el servidor necesita para calcular el resultado. El servidor procesa las solicitudes y, si tiene éxito, envía una respuesta al cliente con el resultado. Si se produce algún error, el servidor envía una respuesta de error al cliente.
Como puede ver, solo hay una solicitud y una respuesta (exitosa o no).
Ejemplo: el servidor tiene un método llamado GetTime, por lo que cada vez que un cliente solicita este método, el servidor devuelve la hora del servidor.
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;
Cliente 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');