Многоклиентский RPC

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

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


person Philippe Paré    schedule 09.11.2016    source источник


Ответы (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/.

person gzost    schedule 10.11.2016