如何在 Heroku 上将 http2 与 Node 结合使用(使用 Koa)

Jac*_*kie 4 heroku node.js http2

我有以下代码...

const PORT = process.env.PORT || 5000;
const app = new Koa();
...
app.listen(PORT)
Run Code Online (Sandbox Code Playgroud)

这在本地和 Heroku 中都非常有效。所以现在我想使用 Http2 所以我更改为以下内容......

const server = http2.createSecureServer(
    {
        "key": fs.readFileSync('./server-key.pem'),
        "cert": fs.readFileSync('./server-cert.pem')
    }, 
    app.callback()
)
server.listen(PORT);
Run Code Online (Sandbox Code Playgroud)

这在本地工作正常,但是,当我上传到 Heroku 时,我得到......

2021-06-24T00:43:00.383108+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=my-app.herokuapp.com request_id=604f4a2c-8dd2-4cfa-9cf2-3cce5ef76070 fwd="..." dyno=web.1 connect=0ms service=1ms status=503 bytes=0 protocol=https
Run Code Online (Sandbox Code Playgroud)

那么如何让 http2 与 Node、Koa 和 Heroku 一起工作呢?

jfr*_*d00 5

根据devcenter.heroku.com 上的这篇文章,Heroku 尚不支持 http/2。

  • @Jackie Heroku 上一直都是这种情况,他们不太可能支持 HTTP/2 - 最好选择更好的托管提供商。检查 https://render.com - 它支持开箱即用的 HTTP/2。 (5认同)
  • @FabienSnauwaert 人们已经问了很长时间,但他们从未回复。自从几年前收购 Salesforce 以来,他们不再创新或发布任何新功能。 (2认同)
  • 我们仍然使用 Heroku 作为我们的生产站点,但现在使用 render.com 作为我们的 PR 应用程序,并可能在不久的将来切换到它们。它很像 Heroku,但提供了更多的灵活性。不要使用 QOVERY!我们将它们用于 PR 应用程序只是为了运行一些 PR 构建,并且它至少需要 5 个中型 AWS 实例。他们不断将其构建为 3-5 个大型或 2xl,最终花费了我每月 2000 美元的 AWS 费用。幸运的是,我们摆脱了这一点,但仍然感到灼烧感。 (2认同)