我正在尝试从 Google 的 Dialogflow v2 Node.js SDK 获取 Dialogflow SDK 示例来工作。我正在使用 node.jsv8.10.0
和 dialogflow node.js SDK 版本0.5.0
。我在尝试从公司 http/s 代理后面运行“检测意图”示例时遇到了这个问题:
Auth error:Error: write EPROTO 140163148314432:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:827
我在这里看到了这篇文章:https ://medium.com/google-cloud/accessing-google-cloud-apis-though-a-proxy-fe46658b5f2a这似乎非常面向 Java,但它建议GRPC_PROXY_EXP
设置环境变量为了让 gRPC 调用在代理后面工作。我在运行 node 的 shell 中设置了环境变量,export GRPC_PROXY_EXP="$https_proxy"
并尝试再次运行示例,但问题相同。请注意,我的$http_proxy
,$https_proxy
变量是相同的。
当连接到没有代理的 wifi 网络时,相同的示例在同一台机器上工作;并且tcpdump
数据包分析表明有两个 TCP 连接(不同的端口)正在使用中:一个有效(并且首先打开),另一个无效,并且遇到代理错误。第二个连接立即开始CLIENT_HELLO
TLS 消息,当它需要首先验证并向 HTTPS 代理发送CONNECT
消息时(与第一个 TCP 连接一样)。
我是否遗漏了什么,或者这是对话流(google-gax / grpc)节点库的问题?