2016-11-09 14 views
1

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

Я просмотрел документацию, но мне не повезло. На самом деле, поддерживает ли вам эта система? Если да, то получили какие-то указатели?

ответ

3

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

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

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

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