WAMP 구성 요소의 가장 일반적인 용도는 클라이언트가 서버에 메서드를 요청하고, 서버가 클라이언트에 응답을 보내는 것입니다. 클라이언트는 메서드 이름만 보낼 수 있고/있거나 서버가 결과를 계산하는 데 필요한 일부 매개변수를 전달할 수 있습니다. 서버는 요청을 처리하고 성공하면 결과와 함께 응답을 클라이언트에 보냅니다. 오류가 있으면 서버는 오류 응답을 클라이언트에 보냅니다.
보시다시피, 하나의 요청과 하나의 응답(성공 또는 실패)만 있습니다.
예: 서버에 GetTime이라는 메서드가 있어 클라이언트가 이 메서드를 요청할 때마다 서버가 서버 시간을 반환합니다.
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');