摘要:几分钟前我打开了一个,它为提供了初始的实现。虽然还不堪用,但对来说是一个重要的里程碑。首先你需要跟着这个介绍来配置好的构建环境。我们付出的越多,就会变的越好。
</>复制代码
原文:Say hello to HTTP/2 for Node.js Core
第一次尝试翻译文章,如果有翻译的不好或者有错误的地方还望大佬们指点一二,谢谢。
几分钟前我打开了一个 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", (stream, requestHeaders) => {
stream.respond();
stream.end("secured hello world!");
});
server.listen(43);
你可以到 文档 中获取更多有关 tls.createServer() 参数里的 key 和 cert 的使用说明。
尽管现在还有很多的细节需要处理,还有很多的问题需要修复,但是这个最初的实现已经提供了足够多的功能了,包括:
支持推流(Push Stream)
respondWithFile() 和 respondWithFD() 可以高效的绕过 Stream API 发送原始文件数据
支持 TLS 和 明文连接
完全支持多路复用的流(stream multiplexing)
支持 HTTP/2 的优先级(Prioritization)和流量控制(Flow Control)
支持 HTTP/2 Trailer 头
支持 HPACK 头压缩
尽可能接近当前 HTTP/1 API 的 API 兼容层
开发将会继续进行,例如安全性加强、性能优化和 API 优化。我们付出的越多,Node.js 就会变的越好。
祝大家复用愉快。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/84190.html
摘要:正在失业中的课多周刊第期我们的微信公众号,更多精彩内容皆在微信公众号,欢迎关注。若有帮助,请把课多周刊推荐给你的朋友,你的支持是我们最大的动力。是一种祸害译本文浅谈了在中关于的不好之处。浅谈超时一运维的排查方式。 正在失业中的《课多周刊》(第3期) 我们的微信公众号:fed-talk,更多精彩内容皆在微信公众号,欢迎关注。 若有帮助,请把 课多周刊 推荐给你的朋友,你的支持是我们最大的...
摘要:正在失业中的课多周刊第期我们的微信公众号,更多精彩内容皆在微信公众号,欢迎关注。若有帮助,请把课多周刊推荐给你的朋友,你的支持是我们最大的动力。是一种祸害译本文浅谈了在中关于的不好之处。浅谈超时一运维的排查方式。 正在失业中的《课多周刊》(第3期) 我们的微信公众号:fed-talk,更多精彩内容皆在微信公众号,欢迎关注。 若有帮助,请把 课多周刊 推荐给你的朋友,你的支持是我们最大的...
摘要:前言这将是一个分为两部分,内容是关于在生产环境下,跑应用的最佳实践。第一部分会关注安全性,第二部分则会关注性能和可靠性。关于第一部分,请参阅在生产环境下的最佳实践安全性。 前言 这将是一个分为两部分,内容是关于在生产环境下,跑Express应用的最佳实践。第一部分会关注安全性,第二部分则会关注性能和可靠性。当你读这篇文章时,会假设你已经对Node.js和web开发有所了解,并且对生产环...
阅读 1637·2023-04-25 17:18
阅读 1961·2021-10-27 14:18
阅读 2207·2021-09-09 09:33
阅读 1904·2019-08-30 15:55
阅读 2095·2019-08-30 15:53
阅读 3508·2019-08-29 16:17
阅读 3497·2019-08-26 13:57
阅读 1805·2019-08-26 13:46
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要