Я читал ZGuide обо всех возможных шаблонах. Я пытаюсь перевести это в среду графического интерфейса С#, где сервер и клиент должны находиться в отдельных потоках для графического интерфейса и основных бизнес-правил.
Я нашел примеры ленивых пиратов очень полезными, однако я не полностью понимаю общий шаблон ZMQ, который подходит для следующих нужд.
Клиент
- Sends messages to server with acknowledgement
- Получает сообщения от сервера о бизнес-состоянии
- Имеет логику повторных попыток и логику отказа, чтобы предупредить конечного пользователя об «отключении» или «сбое» сервера.
Сервер
- Receives client messages and response with acknowledgement
- Отправляет дополнительные сообщения на основе внутреннего состояния
- Ответы на повторную логику на клиенте (возможно, сообщение проверки активности)
- Имеет список известных «подключенных» клиентов на основе полученных сообщений подтверждения активности.
В настоящее время я смущен тем, какие сокеты я должен подключать к другим. Затем добавил к этому то, что я должен сохранить в границах потоков.
Где я сейчас нахожусь, так это в следующем;
|Клиент - Повторить попытку - REQ| -> |REP - KeepAlive - Сервер|
В своих примерах я вижу, что сервер не может направлять сообщения подключенным клиентам. Есть ли способ сохранить адрес всех подключенных клиентов и разрешить отправку с сервера этим конкретным клиентам?