CONNECT не обещает туннель, открытый бесконечно. После успешного обмена соединение передаёт непрерывный поток байтов к запрошенному host и port. Оно может передавать несколько обменов внутри TLS-сеанса назначения, пока участники и сеть держат его открытым.

Два ограничения прокси работают по-разному: трафик может не дать истечь idle-таймеру, но не может продлить absolute предел времени жизни. Своё слово есть и у протокола назначения. Внутренний HTTP-клиент может закрыть своё соединение; приложение WebSocket может завершить свой сеанс. После этого прокси не может поддерживать тот сеанс назначения живым.

Туннель привязан к своей цели. Как только байты туннеля пошли, соединение больше не является обычным каналом HTTP-запросов, в который можно выдавать ещё один CONNECT для несвязанного назначения. Клиенту нужно другое соединение или другой туннель, управляемый его библиотекой.

Для постоянного потока планируйте переподключения, используя поддерживаемые клиентом механизмы живости и соединения. Если он закрывается после тишины, полезная зацепка — политика неактивности; если он закрывается через фиксированное время вопреки трафику, исследуйте абсолютный предел. Для потока WebSocket также восстанавливайте состояние приложения после переподключения.

Похожие статьи