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

mag*_*n94 6 ngrok grpc

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

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

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

捕获错误:gRPC 错误(2,HTTP/2 错误:连接错误:连接被强制终止。(错误代码:10))

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

tunnels:
  grpc:
    proto: http
    addr: 8080
    bind_tls: true
    region: eu
    inspect: true
Run Code Online (Sandbox Code Playgroud)

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

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

尽管服务器正在侦听 8080,但客户端正在尝试通过 https 标准端口 443 连接到 ngrok 的 url。

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

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

mag*_*n94 3

结果发现ngrok这个选项的表现并不好http

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

我想这是因为 ngrok 在选择proto: http!时期望 gRPC 未提供的东西

  • 您是否有机会与您用于 gRPC 的隧道规范共享完整的 ngrok.yml 文件?我已经尝试在您提供的示例中将 proto:http 更改为 proto:tcp ,但无法使其工作 - 如果您有完整的工作配置,我很乐意看到它。谢谢! (2认同)