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