Page 333 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 333

В этом примере мы просто выводим содержимое файла на консоль (заменяя сим­
       волы перехода на новую строку для наглядности). Вы можете поместить оба эти при­
       мера в один и тот же файл: у вас может быть поток записи, пишущий в файл, и по­
       ток чтения, читающий из него.
          Дуплексные потоки не столь распространены и не рассматриваются в этой кни­
       ге. Как и следовало ожидать, вы можете вызвать метод wri te, чтобы писать данные
       в дуплексный поток, а также прослушивать события data и end.
          Поскольку данные в потоках "текут': вполне резонно взять данные, выходящие из
       потока чтения, и перенаправить их в поток записи. Этот процесс называется конвей­
       ером (piping). Например, мы могли бы перенаправить поток чтения в поток записи,
       чтобы скопировать содержимое одного файла в другой.
       const  rs   =  fs . createReadStrea ( ' strea . txt ' ) ;
                                   rn
                                          rn
       const  ws  =  fs . createWriteStrearn ( ' strearn_copy . t xt  ' )  ;
       rs . p ipe (w ) ;
                s
          Обратите внимание, что  в  этом примере мы не должны  определять кодировку
       символов:  rs  просто пересылает байты из файла  t r ea .   txt в поток ws (что при­
                                                          m
                                                     s
       водит к их записи в файл  t ream _со у .   txt); кодировка символов имеет значение,
                                s
                                         р
       только если мы пытаемся интерпретировать данные.
          Конвейерная обработка - это общая методика для перемещения данных. Напри­
       мер, можно переслать содержимое файла в виде ответа веб-сервера. Либо вы могли
       бы переслать сжатые данные процессору распаковки, который, в свою очередь, пере­
       шлет данные программе записи в файл.


       Веб-се р в е р ы

          Хотя Node теперь используется во многих приложениях, его первоначальная цель
       состояла в предоставлении услуг веб-сервера. Таким образом, нельзя не рассмотреть
       и этот способ его применения.
          Те из вас, кто настраивал сервер Apache (или IIS, или любой другой веб-сервер ),
       могут быть поражены простой создания  и  функционирования этого веб-сервера.
       Модуль  http (и его  защищенный дубликат,  модуль  https) предоставляет  метод
       createServer, который создает простой веб-сервер. Все, что вы должны сделать, -
       это указать функцию обратного вызова, которая  будет обрабатывать входящие за­
       просы. Чтобы запустить сервер, нужно просто вызывать его метод  i s t en и указать
                                                                    l
       номер прослушиваемого порта.
                               p
       const  http  =  require ( ' htt ' )  ;
                                                      s
       const  server  =  http . createServer ( f unction ( r eq,  re )    {
                                             l
                    g
                          e
           console . l o ( ' $  { r q . rn ethod }  $ { r eq . u r } ' ) ;
           rеs . е n ( ' Привет,  ми ! ' ) ;
                             р
                 d
       336     Глава 20. Платформа Node
   328   329   330   331   332   333   334   335   336   337   338