TsgcWSPServer_WAMP › Méthodes › CallProgressResult
Envoie un morceau de résultat intermédiaire (progressif) à l'appelant pendant que le RPC est encore en cours d'exécution ; des morceaux supplémentaires ou un CallResult final sont attendus.
procedure CallProgressResult(const aCallId: String; const aResult: String = '');
| Nom | Type | Description |
|---|---|---|
aCallId
| const String
| Identifiant généré par le client lors de l'invocation de la procédure distante. L'appel reste en attente après l'envoi d'un fragment de progression, donc le même aCallId est réutilisé pour chaque fragment supplémentaire et pour le CallResult final. |
aResult
| const String
| Charge utile partielle pour ce fragment. Toute valeur de chaîne est autorisée (nombre, texte, fragment JSON, etc.) ; le destinataire reçoit les fragments dans le même ordre qu'ils sont envoyés. |
Utilisez cette méthode lorsqu'un seul RPC produit plus d'un élément de données (réponses en streaming, résultats paginés, calculs de longue durée, etc.). Chaque invocation écrit une trame WAMP CALL_PROGRESS_RESULT pour l'appelant mais, contrairement à CallResult, elle ne retire pas l'appel de la liste en attente : le serveur doit éventuellement terminer l'échange en appelant CallResult (succès) ou CallError (échec) avec le même aCallId. Si aCallId ne correspond pas à un appel en attente, la méthode ne fait rien silencieusement. Exemple : pour une procédure qui produit 20 éléments, envoyez les éléments 1..19 avec CallProgressResult et l'élément 20 avec 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;