nodejs 5.2.0文档自翻译——HTTP模块

HTTP

通过require("http")来使用HTTP的客户端和服务端。

Node.js中的HTTP接口用于提供对传统协议中难以使用的特性的支持。 尤其是那些庞大或者是块编码的信息。该接口不会缓冲整个请求或者响应——用户可以自己使用流来处理数据。

HTTP头信息会被以如下的对象格式来表示:

{ ‘content-length‘: ‘123‘,
  ‘content-type‘: ‘text/plain‘,
  ‘connection‘: ‘keep-alive‘,
  ‘host‘: ‘mysite.com‘,
  ‘accept‘: ‘*/*‘ }

键都是小写的。值没有被修改。

为了尽可能的支持HTTP应用的全部范围,Node.js的API是很低级的。 它只会处理流和信息的解析。它只是将一个信息解析成HTTP头或者HTTP体但是不会去解析实际的HTTP头或HTTP体。

想了解如何处理重复的http头的细节请参考message.headers

原生的http头被保留在rawHeaders属性中,并以[key, value, key2, value2, ...]的数组形式呈现。比如, 之前的信息头对象就含有一个如下形式的rawHeaders列表:

[ ‘ConTent-Length‘, ‘123456‘,
  ‘content-LENGTH‘, ‘123‘,
  ‘content-type‘, ‘text/plain‘,
  ‘CONNECTION‘, ‘keep-alive‘,
  ‘Host‘, ‘mysite.com‘,
  ‘accepT‘, ‘*/*‘ ]

Class: http.Agent

HTTP代理用于作为一个HTTP客户端请求的socket池。

HTTP代理默认对客户端请求使用keep-alive连接。如果一个空闲的socket没有待定处理的http请求,那么这个socket会被关闭。这意味着当服务器处于低负荷状态时开发者不需要去关闭每一个使用KeepAlive的连接,这是一个好消息。

如果你选择使用KeepAlive,你可以将设置一个标识设置为true来创建一个代理对象(详细信息参考constructor options)。然后,代理对象会在池中保存空闲的socket用于以后来使用。他们会被打上明确的标记所以Node.js的进程不会一直处于运行状态。无论如何,当不需要再使用KeepAlive代理时用destroy()来取消它不失为一个好主意,那样所有的sockets也会被关闭。

socket会被从代理池中移除当socket发生一个‘close‘事件或者一个特殊的‘agentRemove‘事件。这意味着如果你试图去维持一个HTTP请求一段时间而又不愿意将其放入池中,你可以像下面这样来处理:

http.get(options, function(res) {
  // Do stuff
}).on("socket", function (socket) {
  socket.emit("agentRemove");
});

又或者,你可以选择使用agent:false来完全脱离池:

http.get({
  hostname: ‘localhost‘,
  port: 80,
  path: ‘/‘,
  agent: false  // create a new agent just for this one request
}, function (res) {
  // Do stuff with response
})

new Agent([options])

  • options对象用于配置agent. 可以设置以下几个属性:

    • keepAlive 布尔型,在池中保持sockets可以在之后给其他请求使用。默认值是false
    • keepAliveMsecs 整型,当使用HTTP KeepAlive,TCP KeepAlive包要发送多久socket就会保持连接多久,默认是1000. 只有当keepalive为true的时候才会起作用。
    • maxSockets number型,每个主机能够接受的最大的sockets数量,默认是infinity。
    • maxFreeSockets number型,处于空闲状态的socket的最大值。只有当keepAlive设置为true才会起作用。默认值是256。

当这些属性被设置为各自的默认值并被http.request()使用时,默认的 http.globalAgent 才会被使用。

配置其中的任何一个值,你必须创建一个自己的http.Agent对象。

var http = require(‘http‘);
var keepAliveAgent = new http.Agent({ keepAlive: true });
options.agent = keepAliveAgent;
http.request(options, onResponseCallback);

agent.destroy()

销毁任何一个正在被agent使用的sockets。

通常情况下并不需要这么做。不管怎么说,如果你正在使用开启了keepAlive的agent,最好明确的关闭一个即将不被使用的agent。除此以外,sockets会维持一段时间直到服务器关闭他们。

agent.freeSockets

当使用HTTP KeepAlive时,agent.freeSockets对象会包含一个当前空闲的sockets数组。不要修改它。

时间: 2024-10-29 16:44:05

nodejs 5.2.0文档自翻译——HTTP模块的相关文章

PHPDoc PHP注释的标准文档(翻译自Wiki)

文档注释,无非"//"和"/**/"两种 ,自己写代码,就那么点,适当写几句就好了:但是一个人总有融入团队的一天,团队的交流不是那几句注释和一张嘴能解决的,还需要通用的注释标准. PHPDoc是PHP文档注释的一个标准,可以帮助我们在注释文档时有规范,查看别人的代码时更方便.下面的表格是我翻译的WIKI上的PHPDoc,个人英文水平有限,可以参照原文. 文档翻译自:http://en.wikipedia.org/wiki/Phpdoc 标记 用途 描述 @abstr

Vlang官网文档(中文翻译)-vlang中文文档--v0.1.0_20180625

PS:主要为自己学习,,,,看的时候顺便翻译的,,,渣翻(非全人工)勿喷. 介绍 V是一种用于构建可维护软件的静态类型编译编程语言. 它与Go相似,也受到Oberon.Rust.Swift的影响. V是一种非常简单的语言,阅读这份文档大概只需要半小时的时间,读完之后,您将学习到V的全部内容. 尽管很简单,但是它为开发人员提供了很多功能,你能用其它编程语言做的任何事情,都可以用V做到. Hello World fn main() { println('hello world') } 函数用 fn

PHP经验——PHPDoc PHP注释的标准文档(翻译自Wiki)

标记 用途 描述 @abstract   抽象类的变量和方法 @access public, private or protected 文档的访问.使用权限. @access private 表明这个文档是被保护的. @author 张三 <[email protected]> 文档作者 @copyright 名称 时间 文档版权信息 @deprecated version 文档中被废除的方法 @deprec   同 @deprecated @example /path/to/example

Beautiful Soup 4.2.0 文档

Beautiful Soup 4.2.0 文档 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间. 这篇文档介绍了BeautifulSoup4中所有主要特性,并且有小例子.让我来向你展示它适合做什么,如何工作,怎样使用,如何达到你想要的效果,和处理异常情况. 文档中出现的例子在Python2.7和Python3.2中的执行结果相

pdf文档在线翻译的简单方法有哪些?

pdf文档在线翻译的简单方法有哪些?当pdf文件需要在线翻译的时候我们可以将准备好的pdf文件进行在线翻译,下面就让小编给大家简单介绍一下. 步骤一:我们可以直接进入到迅捷PDF在线转换器在线网站中进行翻译即可,但是进入到在线网站我们需要在浏览器上进行搜索进入: 步骤二:进入之后可以在导航栏中找到文档处理中的PDF在线翻译:步骤三:我们可以直接进行自定义选择,自定义一下设置转换,然后进行文件的选择:步骤四:上传文件的时候直接将pdf文件点击上传到界面中或者是直接选择文件进行上传即可:步骤五:等文

Word文档怎么翻译?翻译word文档简单步骤讲解

将文档进行翻译是我们经常遇到的事情,市面上也出现了很多翻译文档的工具,但是使用起来总觉得不是那么好用,一款易上手的工具对我们来说是非常重要的,今天的课堂就是小编给大家分享使用工具将word文档进行翻译的三个小技巧,一起来了解下吧! 文档翻译工具一:在线转换器 1.进入PDF在线转换器页面,在菜单栏中找到文档处理,在弹出的子栏目中找到word在线翻译: 2.通过点击选择文件将需要进行翻译的文件上传至指定区域即可,在自定义转换设置中可以根据自己的需要选择翻译的语种: 3.点击开始翻译,当进度条显示转

Nodejs v4.4.0API文档学习(1)简介

文档参考地址:https://nodejs.org/dist/latest-v4.x/docs/api/ 简介 下面是用nodejs编写的一个web服务的例子,返回"Hello World". const http = require('http'); http.createServer( (request, response) => { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('

NodeJS SuperAgent中文使用文档

原文:https://cnodejs.org/topic/5378720ed6e2d16149fa16bd 题外话 superagent是nodejs里一个非常方便的客户端请求代理模块,当你想处理get,post,put,delete,head请求时,你就应该想起该用它了:) SuperAgent superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下. 一个简单的post请求,并设置请求头信息的例子 r

关于Linux内核文档的翻译

我是一名山东大学的在校本科生,其实我的英语也不是很好,只是一般水平.我去翻译Linux文档只是觉得这份文档还没有中文版的,觉得翻译它们是一件很有意义的事情,并且还能通过翻译文档来理解Linux操作系统和Linux内核. 我的翻译可能会出现很多的错误,希望大家看到后能够及时的给我提出来,我会及时更正,以防误导别人,谢谢大家. 附,我的Linux文档翻译CSDN博客地址: http://blog.csdn.net/luoyhang003/article/category/2565851 另,有兴趣加