【发布时间】:2023-04-04 04:37:01
【问题描述】:
我们在工作中使用request。我们现在可以访问http2 来处理我们的服务器到服务器请求。
你知道任何与使用 http2 的请求具有相同 api (ish) 的节点包吗?
【问题讨论】:
标签: node.js http request http2
我们在工作中使用request。我们现在可以访问http2 来处理我们的服务器到服务器请求。
你知道任何与使用 http2 的请求具有相同 api (ish) 的节点包吗?
【问题讨论】:
标签: node.js http request http2
我遇到了同样的问题,但找不到模块。这不是一个好的解决方案,但您可以破解 request 模块来添加 http2。由于没有人提出更好的答案,因此值得一提。
这就是我所做的:
将 http2 作为布尔值添加到传递给 request 的选项对象中。
在 node_modules/request 中运行:
npm install http2
打开 node_modules/request/request.js
在顶部附近需要 http2 模块:
, http2 = require('http2')
确保 request 不添加“host”标头(在 HTTP2 中已弃用,如果另一端使用 http2 节点模块会导致错误),因此将第 304 行(左右)更改为:
if (!self.hasHeader('host') && !options.http2) {
将 http2 模块添加到第 468 行(左右)的对象声明中,使其变为:
, defaultModules = {'http:':http, 'https:':https, 'http2': http2}
然后让请求在上一行的变量声明之后使用新模块。将此添加到第 471 行(左右):
if (options.http2) {
protocol = 'http2';
}
应用程序的其余部分可以保持不变,如果未设置 options.http2,则 request 的行为与往常一样。
在一项非常不科学的测试中,我发现进行此更改会使一项服务的吞吐量增加约 25%。
【讨论】: