Delphi 无状态HTTP会话中的进度反馈
我需要编程一个无状态服务器来执行远程方法。客户机使用REST和JSON参数传递方法名及其参数。维护结果后,会话将关闭。我必须使用Indy10,TCP/IP作为协议,因此需要考虑使用IdHTTPServer 大型结果集由Indy10分块并以部分形式发送给客户端 我现在的问题是: 如果服务器上的方法需要更长的时间才能生成结果,则它们会提供进度信息。这些是短消息。我怎样才能给客户回信Delphi 无状态HTTP会话中的进度反馈,delphi,rest,indy,delphi-2006,indy10,Delphi,Rest,Indy,Delphi 2006,Indy10,我需要编程一个无状态服务器来执行远程方法。客户机使用REST和JSON参数传递方法名及其参数。维护结果后,会话将关闭。我必须使用Indy10,TCP/IP作为协议,因此需要考虑使用IdHTTPServer 大型结果集由Indy10分块并以部分形式发送给客户端 我现在的问题是: 如果服务器上的方法需要更长的时间才能生成结果,则它们会提供进度信息。这些是短消息。我怎样才能给客户回信 到目前为止,我在服务器上使用了writeflush,但是客户端在返回完整的结果集(包括进度信息)之前等待请求结束。如何
到目前为止,我在服务器上使用了
writeflush
,但是客户端在返回完整的结果集(包括进度信息)之前等待请求结束。如何在客户端显示/处理此类进度信息,同时保持连接打开以接收同一请求的进一步数据?在客户端,而不是常规的HTTP客户端组件TIdHTTP
您可以在unit IdTCPClient中使用Indy classTIdTCPClientCustom
发送请求和处理响应
此类提供对服务器响应处理的完全控制。我使用TIdTelnet
类作为实现MessageBroker消息传递协议客户端的起点,发现它对于文本和二进制数据都稳定可靠
在接收线程中,传入的数据可以读取到分隔符,并解析为块(用于进度信息)并立即进行处理。我需要使用TIdHTTPServer,因为我正在实现REST(一个带有来自TIdHTTP的参数的GET)。我很想使用writebufferflush之类的东西,但我无法让它工作-我总是在messagebox中获得第一个writeln,然后丢弃其余的。请参阅我的编辑,我的建议是在客户端使用TIdTCPClientCustom而不是TIdHTTP,以完全控制服务器响应的处理