非阻塞RPC调用,使用gSoap

Non - blocking RPC invocation, using gSoap

本文关键字:使用 gSoap 调用 RPC      更新时间:2023-10-16

这可能吗?

我知道,我可以进行单向异步通信,但我希望它是双向的。

换句话说,我在询问请求/响应模式,但是阻塞,就像这里描述的(3rd选项)

与使用gSoap的异步,确认,点对点连接相关-我想使(n)ack s也是异步的

您需要一种将请求与回复关联起来的方法。在正常的RPC中,它们通过时间轴相关联:在另一个响应发生之前,响应跟随响应。

一个常见的解决方案是随请求一起发送一个密钥。回复引用相同的键。如果这样做,双向非阻塞RPC将成为两个单向非阻塞RPC连接的特殊情况。键通常被称为request-id或noince。

我认为这是不可能的,使其双向的唯一方法是通过响应'调用的结果'

但是你可能想用一个小技巧在客户端创建另一个server2,并从服务器调用该server2或者,如果这不是你可以通过互联网,因为NAT/防火墙等
2]重新架构你的API,使客户端再次调用服务器基于服务器的响应第一次。

可以两端都有客户端-服务器。例如,您可以在系统1和系统2上拥有客户机服务器。(我指定发送方为客户端,接收方为服务器)。从sys1客户端向sys2服务器发送异步消息。在收到来自sys1的消息时,可以从sys2客户机向sys1服务器发回异步响应。这就是实现异步双向通信的方法。

我猜您需要在一个单独的线程中运行阻塞调用,如下所述:https://developer.nokia.com/Community/Wiki/Using_gsoap_for_web_services#Multithreading_for_non-blocking_calls