Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[译]当 Node.js Core 遇到 HTTP/2大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

第一次尝试翻译文章,如果有翻译的不好或者有错误的地方还望大佬们指点一二,谢谢。

几分钟前我打开了一个 pull-request,它为 Nodejs Core 提供了初始的 http/2 实现。然还不堪用,但对 Node.js 来说是一个重要的里程碑。

因为这只是一个pull-request,你要想和它愉快的玩耍的话需要做好下面这些准备工作。

首先你需要跟着这个介绍来配置好 Node.js 的构建环境。

然后切换initial-pr 分支:

$ git clone https://github.com/jasnell/node
$ git checkout initial-pr

然后开始构建:

$ ./configure
$ make -j8

构建需要小一会儿时间,你可以先去觅个食等待构建完毕。

构建完成之后,随手几行代码就可以开一个 http/2 的服务了:

const http2 = require('http2');
const server = http2.createServer();
server.on('stream',(stream,requestHeaders) => {
  stream.respond({ ':status': 200,'content-type': 'text/plain' });
  stream.write('Hello ');
  stream.end('world');
});
server.listen(8000);

由于现在这http/2 还处在实验阶段,所以你在运行上面代码的时候需要加上一个 --expose-http2 参数:

$ node --expose-http2 h2server.js

需要注意的是,上面启动的服务是一个明文 TCP 连接,而浏览器对于使用 http/2 协议的要求是必须使用 TLS。然而我们可以开一个简单的 http/2 客户端来达到目的:

const http2 = require('http2');
const client = http2.connect('http://localhost:8000');
const req = client.request({ ':method': 'GET',':path': '/' });
req.on('response',(responseHeaders) => {
  // do something with the headers
});
req.on('data',(chunk) => {
  // do something with the data
});
req.on('end',() => client.destroy());

设置好一个开启 TLS 的 http/2 服务只需要额外的几个步骤:

const http2 = require('http2');
const options = {
  key: getKeySomehow(),cert: getCertSomehow()
};
const server = http2.createSecureServer(options);
server.on('stream',requestHeaders) => {
  stream.respond();
  stream.end('secured Hello World!');
});
server.listen(43);

你可以到 文档获取更多有关 tls.createServer() 参数里的 keycert 的使用说明。

尽管现在还有很多的细节需要处理,还有很多的问题需要修复,但是这个最初的实现已经提供了足够多的功能了,包括

  1. 支持推流(Push Stream)

  2. respondWithFile() 和 respondWithFD() 可以高效的绕过 Stream API 发送原始文件数据

  3. 支持 TLS 和 明文连接

  4. 完全支持多路复用的流(stream multiplexing)

  5. 支持 http/2 的优先级(Prioritization)和流量控制(Flow Control)

  6. 支持 http/2 Trailer 头

  7. 支持 HPACK 头压缩

  8. 尽可能接近当前 http/1 API 的 API 兼容层

开发将会继续进行,例如安全性加强、性能优化和 API 优化。我们付出的越多,Node.js 就会变的越好。

祝大家复用愉快。

大佬总结

以上是大佬教程为你收集整理的[译]当 Node.js Core 遇到 HTTP/2全部内容,希望文章能够帮你解决[译]当 Node.js Core 遇到 HTTP/2所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。