TsgcWSPServer_WAMPMétodos › CallProgressResult

CallProgressResult Método

Envía un fragmento de resultado intermedio (progresivo) al llamante mientras el RPC sigue en ejecución; se esperan fragmentos posteriores o un CallResult final.

Sintaxis

procedure CallProgressResult(const aCallId: String; const aResult: String = '');

Parámetros

NombreTipoDescripción
aCallIdconst StringIdentificador generado por el cliente cuando se invocó el procedimiento remoto. La llamada permanece pendiente tras enviar un fragmento de progreso, por lo que el mismo aCallId se reutiliza para cada fragmento adicional y para el CallResult final.
aResultconst StringCarga útil parcial de este fragmento. Se admite cualquier valor de cadena (número, texto, fragmento JSON, etc.); el llamante recibe los fragmentos en el mismo orden en que se envían.

Observaciones

Use este método cuando una sola RPC produzca más de un dato (respuestas en streaming, resultados paginados, cálculos de larga duración, etc.). Cada invocación escribe un frame WAMP CALL_PROGRESS_RESULT al invocador pero, a diferencia de CallResult, no elimina la llamada de la lista pendiente: el servidor debe finalizar el intercambio llamando a CallResult (éxito) o CallError (error) con el mismo aCallId. Si aCallId no corresponde a una llamada pendiente, el método no hace nada silenciosamente. Ejemplo: para un procedimiento que produce 20 elementos, envíe los elementos 1..19 con CallProgressResult y el elemento 20 con CallResult.

Ejemplo

procedure TForm1.sgcWSPServer_WAMP1Call(Connection: TsgcWSConnection;
  const CallId, ProcURI: string; Arguments: TStringList);
var
  i: Integer;
begin
  if ProcURI = 'com.example.stream' then
  begin
    for i := 1 to 19 do
      sgcWSPServer_WAMP1.CallProgressResult(CallId, IntToStr(i));
    sgcWSPServer_WAMP1.CallResult(CallId, '20');
  end;
end;

Volver a Métodos