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分别在服务端响应的数据到达时,传输结束时,连接结束时触发,用于控制响应体(这里对应于请求体)的传输,这里的传输方向是服务端——>客户端。
下面是根据上面的理解,画了个图帮助自己理解,分享给大家

今天先总结到这里,以后看的更多再来补充。
Node.js的http模块理解的更多相关文章
- node.js的http模块的基础 学到的东西
node.js的http模块的基础 学到的东西 其中客户端:我们在node.js中如果要请求服务端中的js或者其他脚本的话要使用http.request()方法他会返回http.ClientReque ...
- 浅析 Node.js 的 vm 模块以及运行不信任代码
在一些系统中,我们希望给用户提供插入自定义逻辑的能力,除了 RPC 和 REST 之外,运行客户提供的代码也是比较常用的方法,好处是可以极大地减少在网络上的耗时.JavaScript 是一种非常流行而 ...
- 利用Node.js的Net模块实现一个命令行多人聊天室
1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...
- Node.js的Formidable模块的使用
今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1) 创建Formidable.IncomingForm对象 var form = new formidab ...
- Node.js入门:模块机制
CommonJS规范 早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ...
- Node.js的net模块
net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ...
- node.js中express模块创建服务器和http模块客户端发请求
首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...
- node.js中ws模块创建服务端和客户端,网页WebSocket客户端
首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...
- node.js中net模块创建服务器和客户端(TCP)
node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...
随机推荐
- Ubuntu中启用关闭Network-manager网络设置问题! 【Server版本】
在UbuntuServer版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改/etc/network/interfaces.具体设置方法如下: (1) UbuntuServer 修改 ...
- 【Python学习】matplotlib的颜色
matplotlib自带的颜色 seaborn的颜色 装了seaborn扩展的话,在字典seaborn.xkcd_rgb中包含所有的xkcd crowdsourced color names. 使用的 ...
- 运维开发:python websocket网页实时显示远程服务器日志信息
功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...
- python基础===python实现截图
python实现全屏截图: from PIL import ImageGrab im = ImageGrab.grab() im.save('F:\\12.png')
- ogre3d环境配置 SDK安装配置及简单事例教程
ogre3d环境配置 SDK安装配置及简单事例教程 http://www.cr173.com/html/22594_1.html ogre3d环境配置 SDK安装配置及简单事例教程 http://ww ...
- 2017多校第8场 HDU 6133 Army Formations 线段树合并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6133 题意:给你一棵n个节点的二叉树,每个节点有一个提交任务的时间,每个节点总的提交任务的罚时为:提交 ...
- MD5加密学习
MD5(Message Digest --消息摘要算法)算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错),任何长度的任意内容都可以用MD5计算出散列值.主要作用是[验明“ ...
- (转)函数后面加const--C++ const成员函数
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于 ...
- Context-Aware Network Embedding for Relation Modeling
Context-Aware Network Embedding for Relation Modeling 论文:http://www.aclweb.org/anthology/P17-1158 创新 ...
- 海量文件查重SimHash和Minhash
SimHash 事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离.海明距离或者余弦角度等等.两两比较固然能很好地适应,但这种方法的一个最大的缺点 ...