Сокет Node.js зависает, когда присутствует агент

У меня следующая установка: Клиент => Прокси-сервер => Исходный сервер

Я использую следующие библиотеки Node.js для каждой из этих частей соответственно: изоморфный-выборка => http-прокси => http

Вот суть настройки в двух файлах, по одному для каждого из серверов и один для клиента: https://gist.github.com/headgency/850cbb199ff397c6da56fb8d86113a7e Чтобы запустить это локально, запустите node server.js в одной оболочке и node fetch.js в другой оболочке.

Когда серверы работают, если я перейду к http://localhost:8818 в браузере, я получу образец ответа {"a":"b"}, так что он работает. Если я перейду к http://localhost:9818, я получу этот ответ также, поэтому проксирование, похоже, работает нормально. Однако, если я запускаю DEBUG=* node fetch.js, который включает прокси-агент HTTP, запрос не выполняется (см. Вывод в https://gist.github.com/head apartments/850cbb199ff397c6da56fb8d86113a7e#file-failure-txt).

Без свойства agent команда выборки отлично работает в командной строке. Как мне отладить эту ошибку зависания сокета?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
590
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, я недостаточно внимательно читал документы https-прокси-агент. Эта строка немного сбивает с толку: An HTTP(s) proxy http.Agent implementation for HTTPS - сам ПРОКСИ может быть либо HTTP, либо HTTPS, но исходный сервер должен быть HTTPS для этого варианта прокси-агента. Для исходного сервера HTTP мне пришлось использовать http-прокси-агент. Таким образом, зависание сокета, вероятно, исходило от https.Agent, пытающегося получить доступ к конечной точке HTTP. Это сработало, когда я перешел на http-proxy-agent.

Другие вопросы по теме