读书笔记《七天学会NodeJS》(2) - 网络操作

0. http
    http模块可支持服务器使用和客户端使用。
    服务器端使用:
    http.createServer创建服务器对象,调用服务器对象的listen监听某端口,等待客户端请求;也是一种基于回调事件机制。
    HTTP请求由请求头+请求内容组成,请求头与请求内容(请求体)间有个空行,在http接收请求回调函数中request参数对象可访问请求头数据以及请求内容。
    HTTP响应由响应头+响应内容组成,在http接收请求回调函数中response参数对象可写入响应数据头以及数据内容(响应体)。
    
    客户端使用:
    http.request创建客户端对象并指定请求目标和请求头数据,此后调用客户端对象的write写入请求数据内容,调用end结束请求调用。
    此外对于GET请求,不需要请求体信息,可直接调用http.get的便捷API。
    接收到响应信息时,会调用回调函数,在此函数中的response参数对象可访问响应头数据以及响应体数据。
    对于采用http.request或http.get方式的HTTP请求时,实际上使用内部的http.globalAgent,也即是全局客户端,但全局客户端并发连接数目前至多为5个,
    若超过则可能发生socket hang up错误,此时可采用调大http.globalAgent.maxSockets属性值来解决,
    同样的https模块客户端也有同样的问题也可以以此方式解决。
    
    ......
    
1. https
    相对HTTP,https需额外处理SSL证书。
    https.createServer相对http.createServer,多了一个参数对象以指定证书密钥信息(key、cert属性)。
    ......
    
2. url
    一般在http/https请求时,用到url内置模块以解析URL、生成URL以及拼接URL。
    url.parse解析url字符串为URL对象。
    url.format则反向将URL对象转为url字符串。
    url.resolve拼接字符串构造url字符串。
    ......
    
3. querystring
    querystring内置模块实现相互转化url参数字符串与参数构成的对象
    querystring.parse解析url字符串为参数构成的对象。
    querystring.stringify则反向转化参数对象为url字符串。
    ......
    
4. zlib
    zlib内置模块可以实现压缩数据和解压数据,其也可用在压缩或解压http请求数据体以及响应数据内容,
    在http请求头信息中获取判断对方是否支持对应的压缩以及压缩方式accept-encoding,以及响应信息头中的content-encoding;
    以此方式过程中,请求方应在请求头信息中添加Accept-Encoding以及对应的响应方在响应头信息中需添加Content-Encoding均为gzip。
    zlib.gzip采用gzip压缩方式压缩数据内容。
    zlib.gunzip则解压被压缩的数据内容。
    ......
    
5. net
    net内置模块可创建基于socket的服务器或客户端。
    net.createServer创建服务器对象并调用listen监听端口。回调参数对象为连接对象,可监听data事件以及调用write写数据。
    net.connect创建客户端对象,options参数指定连接地址和端口。
    使用net模块也可实现HTTP协议的底层操作(事实上传输内容用http对应的信息头+空行+数据内容即可实现http的封装)。
    ......
    

 

posted @ 2019-10-10 20:33  浩月星空  阅读(144)  评论(0编辑  收藏  举报