2

我需要编写一个无状态服务器来执行远程方法。客户端使用带有 JSON 参数的 REST 来传递方法名称及其参数。服务结果后,会话关闭。我必须使用 Indy10、TCP/IP 作为协议,因此考虑使用 IdHTTPServer。

大型结果集由 Indy10 分块并分部分发送给客户端。

我现在的问题是:

如果服务器上的方法需要更长的时间才能产生结果,则它们会提供进度信息。这些是短消息。我怎样才能回信给客户?

到目前为止,我已经writeflush在服务器上使用过,但是客户端在返回完整的结果集(包括进度信息)之前等待请求结束。我该怎么做才能在客户端上显示/处理此类进度信息,同时保持连接打开以接收同一请求的更多数据?

4

1 回答 1

1

在客户端而不是常规的 HTTP 客户端组件TIdHTTP,您可以使用TIdTCPClientCustomIdTCPClient 单元中的 Indy 类来发送请求并处理响应。

此类可以完全控制服务器响应的处理。我使用TIdTelnet该类作为实现消息代理消息传递协议客户端的起点,发现它对于文本和二进制数据都稳定可靠。

在接收线程中,可以将传入的数据读取到分隔符并解析为块(用于进度信息)并立即处理。

于 2010-07-30T08:19:22.937 回答