设为首页 加入收藏

TOP

nodeJS之HTTP(一)
2017-10-13 10:50:15 】 浏览:6965
Tags:nodeJS HTTP

前面的话

  HTTP不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其宗,思想是相同的。NodeJS作为一个宿主运行环境,以java script为宿主语言,它也有自己实现的一套标准,本文将详细介绍nodeJS中的Http模块

 

Agent

【new Agent([options])】

options <Object> 代理的配置选项。有以下字段:
    keepAlive <boolean> 保持 socket 可用即使没有请求,以便它们可被将来的请求使用而无需重新建立一个 TCP 连接。默认为 false。
    keepAliveMsecs <number> 当使用了 keepAlive 选项时,该选项指定 TCP Keep-Alive 数据包的 初始延迟。 当 keepAlive 选项为 false 或 undefined 时,该选项无效。 默认为 1000。
    maxSockets <number> 每个主机允许的最大 socket 数量。 默认为 Infinity。
    maxFreeSockets <number> 在空闲状态下允许打开的最大 socket 数量。 仅当 keepAlive 为 true 时才有效。 默认为 256

  http.request() 使用的默认 http.globalAgent 的选项均为各自的默认值

  若要配置其中任何一个,则需要创建自定义的 http.Agent 实例

【agent.createConnection(options[, callback])】

options <Object> 包含连接详情的选项
callback <Function> 接收被创建的 socket 的回调函数。callback 有 (err, stream) 参数
返回: <net.Socket>

  创建一个用于 HTTP 请求的 socket 或流

  默认情况下,函数类似于net.createConnection()。但如果期望更大的灵活性,自定义代理可重写该方法

  socket 或流可以通过以下两种方式获取:从该函数返回或传入callback

【agent.destroy()】

  销毁当前正被代理使用的任何socket

  通常不需要这么做。但是如果使用的代理启用了keepAlive,则当确定它不再被使用时,最好显式地关闭代理。 否则,在服务器终止它们之前,socket 可能还会长时间保持打开

【agent.freeSockets】

  返回一个对象,包含当前正在等待被启用了 keepAlive 的代理使用的 socket 数组。不要修改该属性

【agent.getName(options)】

options <Object> 为名称生成程序提供信息的选项。
    host <string> 请求发送至的服务器的域名或 IP 地址。
    port <number> 远程服务器的端口。
    localAddress <string> 当发送请求时,为网络连接绑定的本地接口。
返回: <string>

  为请求选项的集合获取一个唯一的名称,用来判断一个连接是否可以被复用。 对于 HTTP 代理,返回 host:port:localAddress。 对于 HTTPS 代理,名称会包含 CA、证书、密码、以及其他 HTTPS/TLS 特有的用于判断 socket 复用性的选项

【agent.maxFreeSockets】

  默认为 256。 对于已启用 keepAlive 的代理,该属性可设置要保留的空闲 socket 的最大数量

【agent.maxSockets】

  默认为不限制。 该属性可设置代理为每个来源打开的并发 socket 的最大数量。 来源是一个 'host:port' 或 'host:port:localAddress' 组合

【agent.requests】

  返回一个对象,包含还未被分配到 socket 的请求队列。 不要修改

【agent.sockets】

  返回一个对象,包含当前正被代理使用的 socket 数组。 不要修改

 

Request

【http.ClientRequest】

  该对象在http.request()内部被创建并返回。它表示着一个正在处理的请求,其请求头已进入队列。请求头仍可使用setHeader(name, value)、getHeader(name) 和 removeHeader(name) API 进行修改。实际的请求头会与第一个数据块一起发送或当关闭连接时发送

  要获取响应,需为 'response' 事件添加一个监听器到请求对象上。当响应头被接收到时,'response' 事件会从请求对象上被触发 。 'response'事件被执行时带有一个参数,该参数是一个 http.IncomingMessage 实例。在 'response' 事件期间,可以添加监听器到响应对象上,比如监听 'data' 事件

  如果没有添加 'response' 事件处理函数,则响应会被整个丢弃。如果添加了 'response' 事件处理函数,则必须消耗完响应对象的数据,可通过调用 response.read()、或添加一个 'data' 事件处理函数、或调用.resume() 方法。数据被消耗完时会触发'end' 事件。在数据被读取完之前会消耗内存,可能会造成 'process out of memory' 错误

  [注意]Node.js 不会检查 Content-Length 与已传输的请求主体的长度是否相等

var http = require('http');
var server = http.createServer(function(req, res){
    console.log(req.url );//'/'
    console.log(req.httpVersion );//1.1
    console.log(req.method );//GET
    //{"host":"127.0.0.1:5000","connection":"keep-alive","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36","accept":"image/webp,image/*,*/*;q=0.8","referer":"http://127.0.0.1:5000/","accept-encoding":"gzip, deflate, sdch, br","accept-language":"zh-CN,zh;q=0.8,en;q=0.6"}
    console.log(JSON.stringify(req.headers) );
    res.end('ok');
});

server.listen(5000);
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇如何通过JS实现简单抖动效果 下一篇如何实现冒泡排序

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目