当前位置: 首页 > 后端技术 > Node.js

【翻译】当Node.jsCore遇到HTTP-2

时间:2023-04-03 17:45:13 Node.js

原文:SayhellotoHTTP/2forNode.jsCore这是我第一次尝试翻译一篇文章。如有翻译不好或错误,希望大家多多指点1月2日,谢谢。几分钟前,我为NodejsCore的初始HTTP/2实现打开了一个拉取请求。它目前还不能使用,但它是Node.js的一个重要里程碑。因为这只是一个pull-request,想要玩的开心,还需要做好以下准备工作。首先,您需要按照此介绍配置Node.js构建环境。然后切换到initial-pr分支:$gitclonehttps://github.com/jasnell/node$gitcheckoutinitial-pr然后开始构建:$./configure$make-j8构建需要一段时间,你可以先去寻找食物,等待构建完成。构建完成后,你可以通过几行代码启动一个HTTP/2服务:consthttp2=require('http2');constserver=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-http2h2server.jsneeds注意上面启动的服务是明文TCP连接,而浏览器对使用HTTP/2协议的要求是使用TLS。但是,我们可以打开一个简单的HTTP/2客户端来实现目标:consthttp2=require('http2');constclient=http2.connect('http://localhost:8000');constreq=client.request({':method':'GET',':path':'/'});req.on('response',(responseHeaders)=>{//对标题做一些事情});req.on('data',(chunk)=>{//对数据做一些事情});req.on('end',()=>client.destroy());在启用TLS的情况下设置HTTP/2服务需要一些额外的步骤:consthttp2=require('http2');constoptions={key:getKeySomehow(),cert:getCertSomehow()};constserver=http2.createSecureServer(选项);server.on('stream',(stream,requestHeaders)=>{stream.respond();stream.end('securedhelloworld!');});server.listen(43);你可以去文档中了解更多关于tls.createServer()参数中的密钥和证书的使用说明。虽然还有很多细节需要处理,还有很多问题需要修复,但是这个初步的实现已经提供了足够的功能,包括:支持推流(PushStream)respondWithFile()和respondWithFD()可以高效BypassingtheStreamAPIto发送原始文件数据支持TLS和明文连接完全支持多路复用流(streammultiplexing)支持HTTP/2优先级(Prioritization)和流量控制(FlowControl)支持HTTP/2Trailerheader支持HPACKheadercompression开发一个API兼容层作为尽可能接近当前的HTTP/1API将继续,例如安全加固、性能优化和API优化。我们付出的越多,Node.js就会变得越好。祝大家重用愉快。

最新推荐
猜你喜欢