是否有像使用http2的包“请求”?

时间:2016-06-06 08:47:53

标签: node.js http request http2

我们正在使用request。我们现在可以访问http2以获取服务器到服务器的请求。

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

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,找不到模块。这个不是一个很好的解决方案,但你可以破解请求模块来添加http2。由于没有人能够提供更好的答案,所以值得一提。

这就是我所做的:

将http2作为布尔值添加到传递给 request 的选项对象。

在node_modules / request中运行:

npm install http2

打开node_modules / request / request.js

在顶部附近需要http2模块:

, http2 = require('http2')

确保请求不添加“host”标头(在HTTP2中不推荐使用,如果另一端使用http2节点模块则会导致错误),因此将304行(或更改)更改为:

if (!self.hasHeader('host') && !options.http2) {

将http2模块添加到第468行(或左右)的对象声明中,使其变为:

, defaultModules = {'http:':http, 'https:':https, 'http2': http2}

然后使 request 在前一行的变量声明之后使用新模块。将其添加到第471行(或左右):

  if (options.http2) {
    protocol = 'http2';
  }

如果未设置options.http2,那么应用程序的其余部分可以保持不变,那么 request 的行为就像它一样。

在一项非常不科学的测试中,我发现进行此项更改可将一项服务的吞吐量提高约25%。