TsgcWSPServer_WAMP › 메서드 › CallProgressResult
RPC가 아직 실행 중인 동안 호출자에게 중간(진행형) 결과 청크를 보냅니다. 후속 청크 또는 최종 CallResult가 예상됩니다.
procedure CallProgressResult(const aCallId: String; const aResult: String = '');
| Name | Type | 설명 |
|---|---|---|
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;