Переопределение Node.js парсера HTTP

Я использую базовый узелhttp.request() работать без проблем на обычных HTTP-серверах. Мне нужно использоватьhttp.request() (или аналогичный) с серверами SHOUTcast. «Протокол» SHOUTcast полностью совместим с HTTP, за исключением одной детали ... первой строки ответа.

Обычные HTTP-серверы отвечают:

HTTP/1.1 200 OK

Серверы SHOUTcast отвечают:

ICY 200 OK

Опять же, остальная часть протокола такая же. Единственная разницаHTTP/1.x противICY.

Я хотел бы расширить, создать подкласс или как-то изменить Node'shttp.request() функция, чтобы я мог заставить его работать с серверами SHOUTcast. Подключение к SHOUTcast с помощью Nodeбыло сделано раньше, но только путем переизобретения всего колеса. Я бы предпочел не делать этого за незначительную разницу в протоколе.

Мой вопрос: есть ли способ сделать одно из следующего?

Расширить или переопределить соответствующие части парсера HTTP узла. (Сомневаюсь, что это возможно, так как кажетсяпарсер нативный код.)

Создай свой фрагмент кода, который анализирует соответствующие части HTTP, но использует как можно больше существующих компонентов Node для HTTP.

Создать простой внутренний прокси (или каким-либо образом передавать данные), чтобы я мог изменить эту первую строку ответа сервера до того, как она достигнет парсера HTTP узла.

Что-то другое?

Я также рассмотрел использованиешинковать, но он не предлагает возможность потоковой передачи ответа. (Он ожидает полного ответа сервера, прежде чем запустить событие, которое не будет работать для потоковых серверов, на которых данные могут работать бесконечно.) В этих же строках я пыталсяЗапрос, но он использует собственный синтаксический анализатор Node, поэтому я получаю те же ошибки синтаксического анализа, что и с собственным HTTP-клиентом.

Ответы на вопрос(2)

Ваш ответ на вопрос