원격 메소드를 실행하려면 상태 비 저장 서버를 프로그래밍해야합니다. 클라이언트는 JSON 매개 변수와 함께 REST를 사용하여 메소드 이름과 매개 변수를 전달합니다. 결과를 서비스 한 후 세션이 닫힙니다. Indy10, TCP/IP를 프로토콜로 사용해야하므로 IdHTTPServer를 사용합니다.상태 비 저장 HTTP 세션의 진행 피드백
큰 결과 집합은 Indy10에 의해 청크되고 일부 클라이언트로 전송됩니다.
내 문제는 지금 : 그들이 결과를 생성하는 데 시간이 더 걸릴 경우 서버에
방법이 진행 정보를 제공합니다. 이들은 짧은 메시지입니다. 클라이언트에 어떻게 다시 쓸 수 있습니까?
지금까지 서버에서 writeflush
을 사용했지만 클라이언트는 진행률 정보를 포함하여 전체 결과 집합을 반환하기 전에 요청이 끝나기를 기다렸습니다. 진행 정보를 클라이언트에 표시/처리하고 동일한 요청에 대해 추가 데이터를 수신하도록 연결을 유지하려면 어떻게해야합니까?
TIdHTTPServer를 사용해야합니다. REST (TIdHTTP의 매개 변수가있는 GET)를 구현하고 있습니다. writebufferflush와 같은 것을 사용하고 싶지만, 작동하지 않습니다. 항상 메시지 상자에서 첫 번째 writeln을 얻은 다음 나머지는 버립니다. –
편집을 참조하십시오. 제안 사항은 TIdHTTP 대신 클라이언트 쪽에서 TIdTCPClientCustom을 사용하여 서버 응답 처리를 완벽하게 제어하는 것입니다. – mjn