Я использую ZeroMQ из .NET и застрял, пытаясь исправить странную проблему. У меня есть сокет типа PUSH и один типа PULL через TCP. Когда клиент отключается, сервер по-прежнему может отправить сообщение (обратите внимание, что никакие флаги не передаются методу Socket.Send), которое получает очень много, прежде чем начать блокировку и ждать повторного подключения клиента и доставки сообщений, которые я пытаюсь отправить потом.
Как я могу избежать потери сообщения (или, в худшем случае, проверить, подключен ли клиент, и если нет, отправить фиктивное сообщение, которое я могу позволить себе потерять)?
Заранее спасибо!
Редактировать: дальнейшее тестирование показывает, что если я подожду 1 секунду после отправки первого сообщения после отключения клиентом, второе заблокируется, но если я вообще не буду ждать, я смогу отправить столько же сообщений как я хочу, и они все потеряются. Это довольно запутанно...