UNPKG

workshopper-browser-guide

Version:

Create an html browser version of the exercise descriptions

52 lines (32 loc) 3.85 kB
Реализуйте программу, которая посылает 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`. Просто наберите: ```sh $ npm install bl ``` Таким образом Вы скачаете и установите последнюю версию этой библиотеки в поддиректорию `node_modules`. Любая библиотека, установленная в эту директорию может быть доступна в вашей программе с помощью конструкции `require`, без необходимости добавления префикса './': ```js var bl = require('bl') ``` Сперва Node будет искать библиотеку во встроенных модулях, а потом в директории `node_modules`, где она и будет находиться. Если у Вас отсутствует соединение с интернетом, просто создайте директорию `node_modules` и скопируйте туда директорию с библиотекой, которую Вы хотите использовать из {appname}: {rootdir:/node_modules/bl} {rootdir:/node_modules/concat-stream} Обе библотеки `bl` и `concat-stream` могут принимать потоки и собирать из них данные за вас. Когда поток будет закончен, будет вызвана функция обратного вызова переданными данными. ```js response.pipe(bl(function (err, data) { /* ... */ })) // or response.pipe(concatStream(function (data) { /* ... */ })) ``` Примите во внимание то, что возможно Вам придеть использовать `data.toString()` для конвертации данных из Buffer. Документацию для обеих библиотек вы cможете получить, набрав в браузере: {rootdir:/docs/bl.html} {rootdir:/docs/concat-stream.html} ----------------------------------------------------------------------