zoukankan      html  css  js  c++  java
  • NodeJS服务器:一行代码 = 一个的HTTP服务器

    从这一篇开始,我们进入技术讲解的话题,逐步实现用NodeJS实现文件的传送共享服务。

    前文我们讲过,NodeJS是最擅长做网络服务器的,今天我们就来用NodeJS做一个最简单的服务器。

    先看一幅图:

    如图中所画,当一个小孩子还很小的时候,如果有叔叔阿姨跟他打招呼,逗他玩,他几乎用相同的方式回应。

    今天我们要做的HTTP服务器也一样,启动之后,不管是那个客户端连接上来,它都统一用Hi回应。

    1、下载安装NodeJS

     推荐大家到官方网站:https://nodejs.org/ 下载最新版本的NodeJS。

     以Windows为例,你可以下载.msi安装包,也可以单独下载node.exe文件。

     为了项目讲诉的一致性,我们假设将NodeJS安装到d:iLinkIT。

     验证安装是否正确:

     打开命令行工具,执行node -v,如果显示NodeJS的版本,则说明已经安装完毕,如下图所示。

     

    2. 编写HTTP服务器端程序

    打开一个文本编辑器,例如:Notepad++,输入如下代码,然后将文件另存为 ilinkit.js ,编码格式选择:utf-8格式。

    1 var http = require( 'http' );
    2 
    3 var server =http.createServer( function ( request ,response ){
    4           response.end( 'Hi' );
    5 } );
    6 server.listen( 8000 );
    7 console.log( 'HTTP服务器启动中,端口:8000.....' );

    这样,一个HTTP服务器就写好了。细心的同学可能会说:标题党!明明不是一行代码嘛!

    了解JavaScript的朋友都知道,把上面的代码放到同一行是没有问题的,另外,其实这个服务器最核心的部分,可以写成下面的形式:

    http.createServer( function ( request ,response ){ response.end( 'Hi' ); } ).listen( 8000 );

    当然了,我们不推荐这种方式,因为很难理解,我们可以在把JavaScript的功能都调通之后,发布时用压缩工具压缩代码。

    下面我们逐行解释一下每行代码的含义,以序号来指代。

    第1行:加载一个http的模块,加载成功后保存到一个名称为 http 的变量中。

    第3行:调用http对象的createServer()函数,创建一个服务器,并传入一个匿名的回调函数,用来响应客户端的请求。

    request,response是不是很熟悉?没错!和JSP等后台语言类似,

    request代表了客户端的请求,客户端是用GET,还是用POST的方法提交的数据?提交的路径是什么?这些信息都通过request对象获取到。

    response代表了服务端对客户端的响应,服务端是给客户端响应一个文本?还是响应一个文件?数据类型是什么?状态码是多少,这些信息都通过response对象向客户端响应。

    第4行:表示不管客户端的请求是什么,服务端向客户端统一反馈一个文本:Hi。

    第6行:启动的服务器,在端口8000监听客户端的请求。

    第7行:console是NodeJS的全局属性,用来向标准输出设备(这里是命令行窗口)输出内容。

    3. 测试HTTP的服务器的效果

    启动命令行,进入到ilinkit.js 所在的目录,然后执行下面的语句:

    >node ilinkit.js

    这时候,显示如下的内容,表示HTTP服务器已经启动。

    我们打开一个浏览器,输入:http://localhost:8000

    浏览器将会显示:Hi

    再输入:http://localhost:8000/helloworld

    浏览器还是显示:Hi

    ......

    因为我们这个简单的服务器,设计的逻辑就是,不管客户端的请求是什么,服务端的响应都是一样的Hi。

    4. 退出NodeJS服务器

    在命令行中,连续按2次 Ctrl + C 即可退出NodeJS。

    至此,一个简单的HTTP服务器就已经完成了,它就像一个小婴儿,还不会说话,只会用Hi来对这个世界做出响应。

    是不是很简单?希望能给你带来一个充满信心的开头^_^~

    -----------------------爱莲(iLinkIT)系列文章------------------------------------------

     缘起爱莲:我要的,现在就要!

    爱莲(iLinkIT)的架构与原理

    遇见NodeJS:JavaScript的贵人

    NodeJS服务器:一行代码 = 一个的HTTP服务器

    NodeJS文件读取:感恩常在--抓把糖果,愉悦客人

    NodeJS缓存机制:畅销货,就多囤一点呗

    NodeJS安全设计:好吃的草莓味糖果,只给好朋友小红

    NodeJS服务器退出:完成任务,优雅退出

  • 相关阅读:
    laravel中get方式表单提交后, 地址栏数据重复的问题
    laravel中firstOrCreate的使用
    表单使用clone方法后, 原有select无法生效
    浏览器提示内容编码错误, 不支持此压缩格式
    web端访问文件没有权限的问题
    $(this)在ajax里面不生效的探究
    如何在github上提交pr
    IDEA配置文件的配置文件配置
    quartz定时任务时间设置
    通过 EXPLAIN 分析低效 SQL 的执行计划
  • 原文地址:https://www.cnblogs.com/alai88/p/5001756.html
Copyright © 2011-2022 走看看