WAMP | RPC Simple

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