Многопользовательский RPC

У меня есть маршрутизатор, сервер и несколько клиентов. Сервер регистрирует методы в маршрутизаторе, а клиенты успешно вызывают методы и получают результат. В некоторых случаях мне нужен сервер, чтобы спросить определенного клиента о чем-то. У меня уже есть sessionId с помощью WampInvocationContext.Current.InvocationDetails, но я не знаю, как клиенты должны регистрировать свои методы, и я не знаю, как вызывать их с сервера.

Я посмотрел в документации, но не повезло. Действительно ли wamp-proto поддерживает такую ​​вещь? Если так, есть какие-нибудь указатели?

1 ответ

Решение

Если я правильно понимаю, вы хотите, чтобы несколько клиентов зарегистрировали одну и ту же процедуру, а затем вызвали определенные из них.

Это невозможно с WAMP, использующим тот же URI для процедуры.

Для того, что вы хотите сделать, предполагаемый способ заключается в использовании URI, которые содержат идентификатор клиента, например, если ваша процедура "com.example.calculate_load", клиенты зарегистрируют "com.example.client_1.calculate_load" (или "com.example.calculate_load.client_1"), и вы будете обращаться к клиентам через URI процедуры.

Несколько клиентов могут зарегистрировать одну и ту же процедуру под одним и тем же URI, но это предназначено для масштабирования процедур или для использования горячих резервов. Маршрутизатор решает, какому клиенту позвонить, основываясь на общей стратегии, в соответствии с которой клиенты зарегистрированы (например, циклический перебор). Смотрите http://crossbar.io/docs/Shared-Registrations/

Другие вопросы по тегам