Реализуйте программу, которая посылает HTTP GET запрос на URL, который вы получите в качестве первого аргумента командной строки. Соберите все данные с сервера (не только первое событие "data") и выведите две строки в консоль (stdout).
Первая строка должна содержать количество символов, полученных с сервера. А вторая должна непостредственно вывести эти символы.
Вы можете решить эту задачу двумя путями:
1) Собрать данные со всех событий "data" и последовательно добавлять их для вывода в консоль. Использовать событие "end" для того чтобы понять то, что поток окончен и вывести результат.
2) Использовать дополнительные библиотеки для того чтобы абстрагироваться от сложности сбора потоковых данных. Для этого есть две библиотеки (на самом деле их больше), которые решают эту задачу: bl
(Buffer List) и concat-stream
; выбор за вами.
http://npm.im/bl http://npm.im/concat-stream
Для того чтобы установить библиотеку воспользуйтесь пакетным менеджером для Node - npm
. Просто наберите:
$ npm install bl
Таким образом Вы скачаете и установите последнюю версию этой библиотеки в поддиректорию node_modules
. Любая библиотека, установленная в эту директорию может быть доступна в вашей программе с помощью конструкции require
, без необходимости добавления префикса './':
var bl = require('bl')
Сперва Node будет искать библиотеку во встроенных модулях, а потом в директории node_modules
, где она и будет находиться.
Если у Вас отсутствует соединение с интернетом, просто создайте директорию node_modules
и скопируйте туда директорию с библиотекой, которую Вы хотите использовать из learnyounode:
/node_modules/bl /node_modules/concat-stream
Обе библотеки bl
и concat-stream
могут принимать потоки и собирать из них данные за вас. Когда поток будет закончен, будет вызвана функция обратного вызова переданными данными.
response.pipe(bl(function (err, data) { /* ... */ }))
// or
response.pipe(concatStream(function (data) { /* ... */ }))
Примите во внимание то, что возможно Вам придеть использовать data.toString()
для конвертации данных из Buffer.
Документацию для обеих библиотек вы cможете получить, набрав в браузере:
/docs/bl.html /docs/concat-stream.html