我需要编写一个无状态服务器来执行远程方法。客户端使用带有JSON参数的REST来传递方法名称及其参数。在为结果提供服务后,会话将关闭。我必须使用Indy10,TCP / IP作为协议,因此请查看使用IdHTTPServer。
大型结果集被Indy10分块并分批发送给客户端。
我现在的问题是:
如果生成结果需要更长时间,服务器上的方法会提供进度信息。这些都是短信。我怎样才能回复客户?
到目前为止,我在服务器上使用了writeflush
,但客户端在返回完整结果集之前等待请求结束,包括进度信息。如何在客户端显示/处理此类进度信息并保持连接打开以接收有关同一请求的更多数据?
答案 0 :(得分:1)
在客户端而不是常规HTTP客户端组件TIdHTTP
上,您可以在单元IdTCPClient中使用Indy类TIdTCPClientCustom
来发送请求并处理响应。
此类可以完全控制服务器响应的处理。我使用TIdTelnet
类作为实现消息代理消息传递协议的客户端的起点,并发现它对于文本和二进制数据都是稳定可靠的。
在接收线程中,传入的数据可以读取到分隔符并解析为块(用于进度信息)并立即处理。