Server socket, получаю обычный, потом создаю еще один обычный сокет и подключаюсь к http серверу. Потом просто копирую из inputstream одного сокета в outputstream другого и наоборот. Причем код копирования каждый рас запускается в отдельном Runnable на Executor-e. Но если на сокеты не сетать timeout, то через несколько запросов (как понимаю просто треды заканчиваются в executor-е) очередной начинает висеть. Дебажнул и такое впечатление, что блокируется на чтении из http сервера обратно на клиент. Тоесть http server -> tcp relay -> client.
Никак не хочется подниматься на уровень http, так как хочу сделать tcp relay универсальным (то есть не важно будет какой протокол будет работать наверху tcp). Или сейчас так не делают или по каким-то причинам, мне неизвестным, это невозможно? Конечно хочется перейти на nio и nio2, но пока пытаюсь держать этот личный эксперимент предельно простым. Заранее большое спасибо за ответ.
Первое не вариант. Буду копать второе. Спасибо!
Обсуждают сегодня