TsgcWSPServer_WAMP › Methoden › CallProgressResult
Sendet einen Zwischenergebnis-Chunk (progressiv) an den Aufrufer, während die RPC noch läuft; weitere Chunks oder ein abschließendes CallResult werden erwartet.
procedure CallProgressResult(const aCallId: String; const aResult: String = '');
| Name | Typ | Beschreibung |
|---|---|---|
aCallId | const String | Vom 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. |
aResult | const String | Partielle 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. |
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.
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;