由于连接被强行终止,使用 ngrok 测试 gRPC 失败

Testing gRPC with ngrok fails due to connection forcefully terminated

我在通过 ngrok 公开 gRPC 服务器时遇到一些问题。

我已经关注并从 here 下载了演示代码。

通过 localhost 连接没问题,但通过 ngrok 连接导致我出现以下错误:

Caught error: gRPC Error (2, HTTP/2 error: Connection error: Connection is being forcefully terminated. (errorCode: 10))

这是我在 ~/.ngrok2/ngrok.yml 文件中用于 ngrok 的隧道配置:

tunnels:
  grpc:
    proto: http
    addr: 8080
    bind_tls: true
    region: eu
    inspect: true

这就是我到目前为止所做的:

  1. dart bin/server.dart
  2. ngrok grpc
  3. 编辑 lib/src/client.dart 以使用来自 ngrok
  4. forwarding url
  5. dart bin/client.dart

虽然服务器正在侦听 8080,但客户端正在尝试连接到标准端口 443 上的 ngrok url 以获得 https。

我正在考虑使用 HTTP2(gRPC 所依赖的),但根据 this ngrok 应该支持它(我是 运行 版本 2.3.35)。

我错过了什么或做错了什么?

事实证明 ngrok 使用 http 选项时效果不佳。

切换到 proto:tcp 解决了我的问题。

我想那是因为 ngrok 在选择 proto: http!

时期望 gRPC 没有提供某些东西