【问题标题】:Is there a "request" like package using http2?是否有类似使用 http2 的包的“请求”?
【发布时间】:2023-04-04 04:37:01
【问题描述】:

我们在工作中使用request。我们现在可以访问http2 来处理我们的服务器到服务器请求。

你知道任何与使用 http2 的请求具有相同 api (ish) 的节点包吗?

【问题讨论】:

    标签: node.js http request http2


    【解决方案1】:

    我遇到了同样的问题,但找不到模块。这不是一个好的解决方案,但您可以破解 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%。

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2015-07-12
      • 2020-07-15
      • 2019-08-09
      • 1970-01-01
      • 2021-08-07
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多