UNPKG

workshopper-browser-guide

Version:

Create an html browser version of the exercise descriptions

40 lines (25 loc) 3.72 kB
Реализуйте HTTP сервер, который отдает одинаковый файл для всех входящих запросов. Сервер должен слушать порт, который будет передан в качестве первого аргумента командной строки. Файл, который нужно возвращать будет передан в качестве второго аргумента командной строки. Вы **должны** использовать `fs.createReadStream()` метод для отдачи содержимого файла. ---------------------------------------------------------------------- ## ИНФОРМАЦИЯ В связи с тем, что в этом задании нам нужно создать HTTP сервер, а не низкоуровневый TCP сервер, то мы должны использовать встроенный `http` модуль Node. Так же как и `net` модуль, `http` имеет метод `http.createServer()`, но в этом случае он создает сервер, который может общаться по HTTP. `http.createServer()` принимает функцию, которая будет вызвана один раз для каждого соединения к серверу. Она имеет следующую сигнатуру: ```js function callback (request, response) { /* ... */ } ``` где два аргумента это объекты, представляющие HTTP запрос и соответствующий ответ на этот запрос. `request` используется для получения таких свойств запроса, как заголовок или строка-зпроса, в то время, как `response` нужен для отправки данных клиенту, как заголовков, так и тела ответа. Оба `request` и `response` являются потоками Node! Это значит что Вы может как посылать, так и принимать потоки данных, если это подходит для Вашего случая. `http.createServer` возвращает экземпляр Вашего сервера. Вы должны вызвать `server.listen(portNumber)` для того чтобы стартовать сервер на заданом порту. Типичный Node HTTP сервер выглядит так: ```js var http = require('http') var server = http.createServer(function (req, res) { // обработка запросов }) server.listen(8000) ``` Документацию для `http` модуля вы сможете найти набрав в браузере: {rootdir:/node_apidoc/http.html} Встроенный модуль `fs` также имеет потоквые API для файлов. Вы должны использовать метод `fs.createReadStream()` для создания потока представляющий файл, который Вы получите в качестве аргумента командной строки. Этот метод возвращает потоковый объект (stream) который Вы можете использовать как `src.pipe(dst)` для того чтобы направить данные из потока `str` в поток `dst`. В нашем случае вы можете связать поток файловой системы с потоком HTTP. ----------------------------------------------------------------------