zoukankan      html  css  js  c++  java
  • Node.js的http模块理解

    Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的HTTP客户端。
    http.Server是一个基于事件的HTTP服务器,它的核心由C++编写,兼顾高性能和简易性
    http.request是一个HTTP客户端工具,用于向HTTP服务器发起请求。
    (1)先来说说http.Server服务器部分。
    http.Server是继承于EventEmitter对象的,它有三个事件:request,connection,close。
    这里面涉及到两个实例:http.ServerRequest,http.ServerResponse.
    http.ServerRequest提供了以下3个事件:主要是用来控制请求体传输。

    * data:请求体数据到来时触发
    * end:请求体数据传输完成时触发
    * close:用户当前请求结束时触发
    

    http.ServerResponse也有3个函数,这里的response是http.ServerResponse的一个实例。

    * response.writeHead():向请求客户端发送响应头。
    * response.write():向请求的客户端发送响应内容
    * response.end():结束响应。告知客户端要返回的内容已经发送完毕。
    

    (2)然后是客户端,客户端提供了两个函数:http.request,http.get.用于客户端向HTTP服务器发起请求。
    这里也涉及到两个实例:http.ClientRequest,http.ClientResponse.

    * http.ClientRequest,像http.ServerResponse一样提供了write和end函数,用于向服务器发送请求体,通常用于POST,PUT等操作,所有写结束之后要调用end函数通知服务器,否则请求无效。
    * http.ClientResponse,像http.ServerRequest一样也提供了3个事件:
    
    	* data:数据到达时触发
    	* end:数据传输结束时触发
    	* close:连接结束时触发
    

    我正在学习这一部分,是在网上下载了《Node.js开发指南》pdf版的来学习,开始看第一遍有点蒙蔽,然后看第二遍似乎有点明白了,结合了一些网上的小栗子来理解。主要分为两个部分。
    首先,我觉得客户端和服务器两个进行交互,主要的工作是客户端进行请求(这里类似于http.ClientRequest的功能),服务器作出响应(这里类似于http.ServerResponse).他们都有write和end函数,对于客户端,write函数的主要功能是将客户端提交信息给服务端(POST请求),end函数是代表客户端向服务器发送请求完毕时触发;对于服务器而言,write函数主要是向请求的客户端发送响应内容,end函数是结束响应,告知客户端要返回的内容已经发送完毕。
    其次,还有两个实例(http.ClientResponse,http.ServerRequest).它们都有data,end,close事件。
    http.ServerRequest的data,end,close分别在客户端请求体数据到来时,数据传输完成,用户当前请求结束时触发。用于控制请求体的传输,这里的传输方向是客户端——>服务端。
    http.ClientResponse的data,end,close分别在服务端响应的数据到达时,传输结束时,连接结束时触发,用于控制响应体(这里对应于请求体)的传输,这里的传输方向是服务端——>客户端。
    下面是根据上面的理解,画了个图帮助自己理解,分享给大家

    今天先总结到这里,以后看的更多再来补充。

  • 相关阅读:
    Android Studio git 使用
    LInux tty 非阻塞配置以及安全读取数据方法
    Android JNI LOG 打印
    Android APP JNI 编写
    插件地址
    Linux 设置默认路由
    Linux Shell 判断语句
    ORACLE存储过程创建失败,如何查看其原因
    ORACLE时间函数(SYSDATE)深入理解
    JS中,如何判断一个数是不是小数?如果是小数,如何判断它是几位小数 保留n位小数
  • 原文地址:https://www.cnblogs.com/sminocence/p/7788840.html
Copyright © 2011-2022 走看看