TsgcWSPServer_WAMP › Métodos › CallProgressResult
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.
procedure CallProgressResult(const aCallId: String; const aResult: String = '');
| Nombre | Tipo | Descripción |
|---|---|---|
aCallId | const String | Identificador 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. |
aResult | const String | Carga ú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. |
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.
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;