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

【搬运工】向Node.jsCore的HTTP-2问好

时间:2023-04-03 23:46:04 Node.js

来源:向Node.js核心的HTTP/2打个招呼–Node.js集合–Medium几分钟前,我打开了初始拉取请求,它将为Node.js核心提供HTTP/2的实现。虽然距离生产准备还很远,但这标志着一个关键的里程碑。因为这只是一个拉取请求,所以可以尝试,但还有一些额外的步骤。首先,你需要确保你是按照此处的说明在本地构建Node.js:https://github.com/nodejs/nod...之后,检查工作分支:$gitclonehttps://github.com/jasnell/node$gitcheckoutinitial-prThenbuild...$./configure$make-j8警告,从头开始构建Node.js需要相当多的时间。所以在事情开始的时候去吃点快餐。完成后,您可以在几行代码中创建一个正常运行的HTTP/2服务器:consthttp2=require('http2');constserver=http2.createServer();server.on('stream',(stream,requestHeaders)=>{stream.respond({':status':200,'content-type':'text/plain'});stream.write('你好');stream.end('world');});server.listen(8000);因为HTTP/2支持仍处于实验阶段,为了运行这个服务器,必须使用--expose-启动Node.js实例http2命令行参数:$node--expose-http2h2server.js请注意,上面的服务器使用纯文本TCP连接,因此无法从需要使用TLS的Web浏览器访问服务器。然而,我们可以创建一个简单的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(options);server.on('stream',(stream,requestHeaders)=>{stream.respond();stream.end('securedhelloworld!');});server.listen(43);有关所需密钥和证书配置的更多信息,请参阅Node.jstls.createServer()文档选项。虽然仍有许多细节需要解决,并且可能有许多问题需要修复......这个初始实现提供了足够的功能来开始,包括:PushStreamSupportrespondWithFile()和respondWithFD()API允许非常高效发送绕过StreamsAPI.TLS和纯文本连接的原始文件数据完全支持流多路复用HTTP/2优先级和流控制支持HTTP/2trailersHPACK标头压缩支持尽可能接近t运行的兼容性API层现有的HTTP/1API开发将继续进行,安全加固、性能优化和API细化也将继续进行。我们对此投入的越多,它就会变得越好。祝大家多路复用快乐:-)

最新推荐
猜你喜欢