Proxy — API
Конструктор
Заголовок раздела «Конструктор»new localzet\Proxy(?string $socketName = null, array $socketContext = [])Передаёт аргументы родительскому Server, затем устанавливает собственный onMessage. Адрес прослушивания задаётся первым аргументом. Socket context относится к родительскому listener; он не настраивает TLS/timeout исходящего соединения внутри callback.
| Поле | По умолчанию | Значение |
|---|---|---|
name | Localzet Proxy | Имя сервера в выводе Localzet Server. |
count | 6 | Число worker-процессов. |
onMessage | Callback конструктора | Извлечение URL и связывание TCP-соединений. |
Остальные свойства и lifecycle наследуются от установленной версии Server. Не меняйте обработчик onMessage, если ожидаете сохранить поведение прокси: он и содержит всю маршрутизацию этого класса.
Что делает onMessage
Заголовок раздела «Что делает onMessage»- Разбирает
$bufferчерезexplode(' ', $buffer). - Передаёт второй элемент в
parse_url(). - Возвращается без ответа, если нет
host. - Создаёт
AsyncTcpConnection('tcp://host:port'), порт по умолчанию80. - Для CONNECT сразу отвечает клиенту
200; для остальных методов отправляет upstream исходный buffer. - Устанавливает двусторонний
pipe()и вызываетconnect().
Выбор маршрута здесь не использует заголовки Host/Proxy-Authorization и не проверяет scheme, DNS-результат или допустимость IP.
Ошибки и гарантии
Заголовок раздела «Ошибки и гарантии»У класса нет отдельного публичного API возврата ошибок проксирования. Пустой onError не выдаёт 502, не записывает причину и не выполняет собственную retry-политику. Неполная или некорректная стартовая строка не преобразуется к стабильной документированной HTTP-ошибке.
Не запускайте проверки запросами к внутренним сервисам или metadata endpoints: исходящий доступ принадлежит серверу, а не клиентской машине. Для теста используйте отдельный локальный upstream без привилегированных данных.