Ищем предложения по следующей проблеме.
Я работаю над приложением (клиентом), которое использует один сокет TCP для чтения и записи сообщений на сервер.
Сообщение - это один из нескольких предопределенных типов, который будет обработан по прибытии.
Сервер может транслировать сообщение в любое время.
Клиент отправит сообщение на сервер и ожидает ответа. Однако (и здесь мой вопрос приходит), я не могу читать из сокета, чтобы получить это сообщение, так как понятия не имею, когда оно может быть доставлено. В большинстве случаев ответное сообщение клиента будет доставлено сразу после запроса клиента. Однако иногда другое широковещательное сообщение будет отправлено первым.
Канал чтения сокета помещается в очередь блокировки одним потоком производителя. В отдельном потоке потребителей все сообщения удаляются из очереди и отправляются для дальнейшей обработки. Чтобы получить ожидаемые клиентские ответы, должен ли я использовать идиому источника событий / слушателя, чтобы мои клиенты были уведомлены, когда их (и если) ответы будут получены?
Спасибо за любые предложения.
РЕДАКТИРОВАТЬ: Я думаю, что мой вопрос неясен, так как предложения до сих пор не касаются проблемы под рукой. В конце концов, я использовал идиому источника / слушателя события, чтобы справиться с этим. Еще раз спасибо за ошибку, но я считаю, что это закрыто. Модератор может даже захотеть удалить этот вопрос.