TsgcWSPServer_WAMP › メソッド › CallProgressResult
RPC がまだ実行中の間に呼び出し元に中間(プログレッシブ)結果チャンクを送信します。後続のチャンクまたは最終的な CallResult が期待されます。
procedure CallProgressResult(const aCallId: String; const aResult: String = '');
| 名前 | タイプ | 説明 |
|---|---|---|
aCallId | const String | リモートプロシージャが呼び出されたときにクライアントが生成した識別子。進捗チャンクの送信後も呼び出しは保留状態のままのため、同じ aCallId がすべての追加チャンクおよび最終 CallResult で再利用されます。 |
aResult | const String | このチャンクの部分的なペイロード。任意の文字列値(数字、テキスト、JSON フラグメントなど)が許可されます。呼び出し元は送信されたのと同じ順序でチャンクを受信します。 |
単一のRPCが複数のデータ(ストリーミングレスポンス、ページ分割された結果、長時間実行される計算など)を生成する場合に、このメソッドを使用します。各呼び出しは、WAMPのCALL_PROGRESS_RESULTフレームを呼び出し元に書き込みますが、CallResultとは異なり、保留中のリストから呼び出しを削除しません。サーバーは最終的に、同じaCallIdを使用してCallResult(成功)またはCallError(失敗)を呼び出して、やり取りを終了する必要があります。aCallIdが保留中の呼び出しに対応しない場合、このメソッドは何も行いません。例: 20項目を返すプロシージャの場合、項目1から19をCallProgressResultで送信し、項目20を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;