NodeJS | Как прервать получение HTTP-ответа, если NodeJS отправил HTTP-запрос на сайт? — efim360.ru

NodeJS | Как прервать получение HTTP-ответа, если NodeJS отправил HTTP-запрос на сайт?

Как не дожидаться полного получения HTTP-ответа и всех событий ‘data’, если NodeJS отправил HTTP-запрос в качестве клиента?

Ситуация такая. Есть приложение. NodeJS рассылает множество HTTP-запросов на сторонние сайты и извлекает из HTTP-ответов полезную информацию. У нас NodeJS находится в роли клиента, а не сервера.

В нашем примере интерес представляют только данные гипертекстовых страниц. Нам не интересны картинки, видеоролики, музыка, документы и прочие виды файлов. Нам интересен только HTML.

Иногда запросы посылаются на адреса, которые отдают эти самые БОЛЬШИЕ файлы. Нам нужно перехватывать эти передачи и своевременно прерывать их, чтобы не тратить ресурсы приложения. Как это сделать?

Любой объект HTTP-запроса или HTTP-ответа в NodeJS имеет ключ «socket«. Под этим ключом хранится объект СОКЕТА, который представляет текущее успешное соединение КЛИЕНТА с СЕРВЕРОМ.

Для прерывания HTTP-запроса можно использовать выражение «request?.destroy()«.

Для прерывания HTTP-ответа можно использовать выражение «response.socket?.destroy()«.

 

 

Информационные ссылки

Стандарт NodeJS — Раздел «socket.destroy([error])» — https://nodejs.org/dist/latest-v19.x/docs/api/net.html#socketdestroyerror