Написание прокси сервера на сокетах. Проброс сообщений основному серверу и возврат значений через прокси

Есть 3 приложения.

1. Клиент.

2. Прокси сервер.

3. Сервер.

Что задумано

: Запускается клиент и получает параметры конфигурации с сервера. Нужен теперь посредник. Клиент обратился к посреднику (Прокси сервер), посредник передал запрос на сервер, сервер его обработал, вернул посреднику. а посредник клиенту.

Технические детали

: Клиент запрашивая данные ждёт не более 5 секунд, иначе вылетает исключение, коннект закрывается. И этого не изменить, проект большой и давно написан.

Вопрос

:

Нормально ли получив на прокси сервере сообщение тут же сразу его по существующему коннекту (сокету) передать серверу и запросив чтение из сокета получить ответ и сразу же его передать клиенту? Обычно это так делается? Или нужно что-то делать типа очереди сообщений и т.д.? Где про это почитать можно?

То есть, если прокси сервер не будет подключен к серверу, то получив сообщение от клиента он просто ничего не вернёт и клиент ничего не получит закрыв соединение. Хотя какие другие есть тут варианты я даже не знаю.

Добавлено через 43 секунды

Под сообщениями я понимаю сериализованный данные. В общем есть свой бинарный протокол.

Добавлено через 41 секунду

Сервер получив сообщение определяет его тип (число по сути, а в программе enum) и в зависимости от типа уже принимаем решение, что с ним делать.