TsgcWSPServer_WAMPMethoden › CallProgressResult

CallProgressResult Methode

Sendet einen Zwischenergebnis-Chunk (progressiv) an den Aufrufer, während die RPC noch läuft; weitere Chunks oder ein abschließendes CallResult werden erwartet.

Syntax

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

Parameter

NameTypBeschreibung
aCallIdconst StringVom Client generierte Kennung, als die entfernte Prozedur aufgerufen wurde. Der Aufruf bleibt nach dem Senden eines Fortschritts-Chunks ausstehend, sodass dieselbe aCallId für jeden zusätzlichen Chunk und für das endgültige CallResult wiederverwendet wird.
aResultconst StringPartielle Payload für diesen Chunk. Jeder String-Wert ist zulässig (Zahl, Text, JSON-Fragment usw.); der Aufrufer empfängt die Chunks in derselben Reihenfolge, in der sie gesendet werden.

Hinweise

Verwenden Sie diese Methode, wenn ein einzelner RPC mehr als ein Datenelement produziert (Streaming-Antworten, paginierte Ergebnisse, lang laufende Berechnungen usw.). Jeder Aufruf schreibt einen WAMP-CALL_PROGRESS_RESULT-Frame an den Aufrufer, entfernt aber im Gegensatz zu CallResult den Aufruf nicht aus der Liste der ausstehenden Aufrufe: Der Server muss den Austausch schließlich abschließen, indem er CallResult (Erfolg) oder CallError (Fehler) mit derselben aCallId aufruft. Wenn aCallId keinem ausstehenden Aufruf entspricht, tut die Methode stillschweigend nichts. Beispiel: Für eine Prozedur, die 20 Elemente liefert, senden Sie die Elemente 1..19 mit CallProgressResult und Element 20 mit CallResult.

Beispiel

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;

Zurück zu Methoden