WAMP | RPC simples

O uso mais comum do componente WAMP é um cliente requisitar um método do servidor, e o servidor enviar uma resposta ao cliente. O cliente pode enviar apenas o nome do método e/ou pode passar alguns parâmetros exigidos pelo servidor para calcular o resultado. O servidor processa as requisições e, se bem-sucedido, envia uma resposta ao cliente com o resultado. Se houver algum erro, o servidor envia uma resposta de erro ao cliente.

Como você pode ver, há apenas Uma requisição e Uma resposta (bem-sucedida ou não).

 

Exemplo: o servidor tem um método chamado GetTime, portanto toda vez que um cliente requisita este método, o servidor retorna o horário do 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;

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