Подтвердить что ты не робот

Неблокирующий вызов RPC, используя gSoap

Возможно ли это?

Я знаю, я могу сделать одностороннюю асинхронную связь, но я хочу, чтобы она была двусторонней.

Другими словами, я спрашиваю о шаблоне запроса/ответа, но не -блоке, как описано здесь (опция < rd)

Связано с Асинхронное, подтвержденное, двухточечное соединение с использованием gSoap - Я хотел бы сделать асинхронный (n)ackк югу >

4b9b3361

Ответ 1

Я думаю, что это невозможно при базовом использовании, Единственный способ сделать это двумя способами - это ответ "результаты вызова"

Но вы можете использовать небольшой трюк 1] Создайте еще один сервер2 на стороне клиента и вызовите этот сервер2 с сервера Или если это не вы можете сделать через Интернет из-за NAT/firewall и т.д.
2] повторно создайте свой api, чтобы клиент снова вызывал сервер на основе ответов на сервер.

Ответ 2

У вас может быть клиент-сервер с обоих концов. Например, вы можете иметь клиентский сервер в системе 1 и системе 2. (Я указываю отправителя как получателя и получателя в качестве сервера). Вы отправляете асинхронное сообщение от клиента sys1 на сервер sys 2. При получении сообщения из sys1 вы можете отправить ответ async от клиента sys 2 на сервер sys1. Вот как вы можете сделать асинхронную двухстороннюю связь.

Ответ 4

Вам нужен способ связать запросы с ответами. В нормальном RPC они связаны временной шкалой: ответ следует за ответом, прежде чем может произойти другой ответ.

Общим решением является отправка ключа вместе с запросом. Ответ ссылается на тот же ключ. Если вы это сделаете, двусторонний неблокирующий RPC станет частным случаем двух односторонних неблокирующих RPC-соединений. Ключ обычно называется чем-то вроде request-id или noince.