TsgcWSPServer_WAMPメソッド › CallProgressResult

CallProgressResult メソッド

RPC がまだ実行中の間に呼び出し元に中間(プログレッシブ)結果チャンクを送信します。後続のチャンクまたは最終的な CallResult が期待されます。

構文

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

パラメータ

名前タイプ説明
aCallIdconst Stringリモートプロシージャが呼び出されたときにクライアントが生成した識別子。進捗チャンクの送信後も呼び出しは保留状態のままのため、同じ aCallId がすべての追加チャンクおよび最終 CallResult で再利用されます。
aResultconst 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;

メソッドに戻る