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 个条目的过程,使用 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;