Шаблон ZeroMQ для использования от 1 до N с повторной попыткой на клиенте и подключением знаний для сервера

Я читал ZGuide обо всех возможных шаблонах. Я пытаюсь перевести это в среду графического интерфейса С#, где сервер и клиент должны находиться в отдельных потоках для графического интерфейса и основных бизнес-правил.

Я нашел примеры ленивых пиратов очень полезными, однако я не полностью понимаю общий шаблон ZMQ, который подходит для следующих нужд.

  • Клиент

    • Sends messages to server with acknowledgement
    • Получает сообщения от сервера о бизнес-состоянии
    • Имеет логику повторных попыток и логику отказа, чтобы предупредить конечного пользователя об «отключении» или «сбое» сервера.
  • Сервер

    • Receives client messages and response with acknowledgement
    • Отправляет дополнительные сообщения на основе внутреннего состояния
    • Ответы на повторную логику на клиенте (возможно, сообщение проверки активности)
    • Имеет список известных «подключенных» клиентов на основе полученных сообщений подтверждения активности.

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

Где я сейчас нахожусь, так это в следующем;

|Клиент - Повторить попытку - REQ| -> |REP - KeepAlive - Сервер|

В своих примерах я вижу, что сервер не может направлять сообщения подключенным клиентам. Есть ли способ сохранить адрес всех подключенных клиентов и разрешить отправку с сервера этим конкретным клиентам?


person Jason    schedule 07.09.2012    source источник


Ответы (1)


Да, вы можете хранить адреса (идентификаторы) всех известных клиентов и отправлять тактовые импульсы с сервера каждому из этих клиентов. Используйте МАРШРУТИЗАТОР на сервере. Прочтите главы 3 и 4 еще раз, пока они не станут более понятными.

person Pieter Hintjens    schedule 11.09.2012
comment
Перечитал руководство несколько раз (предварительная электронная книга тоже хороша, спасибо). Есть ли способ использовать Smarts ZeroMQ для устранения необходимости внутренней обработки списка подключенных сокетов? Из моего чтения я не вижу способа сделать это. Если я снова пропустил раздел, извините. - person Jason; 08.11.2012