这甚至可能吗?
我知道,我可以进行单向异步通信,但我希望它是双向的。
换句话说,我问的是请求/响应模式,但不是阻塞的,就像这里描述的那样(第三个选项)
与使用 gSoap 的异步、确认、点对点连接相关- 我也想让(n)ack
s 异步
这甚至可能吗?
我知道,我可以进行单向异步通信,但我希望它是双向的。
换句话说,我问的是请求/响应模式,但不是阻塞的,就像这里描述的那样(第三个选项)
与使用 gSoap 的异步、确认、点对点连接相关- 我也想让(n)ack
s 异步
您需要一种将请求与回复相关联的方法。在正常的 RPC 中,它们通过时间线相关联:在另一个响应发生之前,响应跟随响应。
一种常见的解决方案是随请求一起发送密钥。回复引用相同的密钥。如果这样做,双向非阻塞 RPC 将成为两个单向非阻塞 RPC 连接的特例。密钥通常被称为 request-id 或 noince 之类的东西。
我认为这是不可能通过基本用法实现的,唯一的方法是通过响应“通话结果”
但是您可能想使用小技巧 1] 在客户端创建另一个 server2 并从服务器调用该 server2 或者如果不是这样,由于 NAT / 防火墙等原因,您可以通过 Internet 进行操作
2] 重新构建您的 api,以便客户端再次调用基于服务器的服务器服务器上第一时间响应。
您可以在两端都有客户端 - 服务器。例如,您可以在系统 1 和系统 2 上拥有客户端服务器。(我将发送者指定为 cient,将接收者指定为服务器)。您将异步消息从 sys1 客户端发送到 sys 2 服务器。从 sys1 接收消息后,您可以将 sys 2 客户端的异步响应发送回 sys1 服务器。这就是您可以进行异步双向通信的方式。
我想您需要在单独的线程中运行阻塞调用,如下所述:https ://developer.nokia.com/Community/Wiki/Using_gsoap_for_web_services#Multithreading_for_non-blocking_calls