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 不同,它会将该调用从待处理列表中移除:服务器最终必须通过调用相同 aCallIdCallResult(成功)或 CallError(失败)来完成交换。如果 aCallId 不对应待处理的调用,则该方法静默不执行任何操作。示例:对于返回 20 个条目的过程,使用 CallProgressResult 发送条目 1..19,使用 CallResult 发送条目 20。

示例

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;

返回方法