問題タブ [grpc-node]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
proxy - Node.js の Google GAX / gRPC が HTTP/S プロキシで機能しない
Google の Dialogflow v2 Node.js SDK から Dialogflow SDK サンプルを動作させようとしています。私は node.jsv8.10.0
を、dialogflow node.js SDK version で使用しています0.5.0
。企業の http/s プロキシの背後から「Detect Intent」サンプルを実行しようとすると、この問題が発生します。
ここでこの投稿に出くわしました: https://medium.com/google-cloud/accessing-google-cloud-apis-through-a-proxy-fe46658b5f2a非常にJava指向のように見えましたが、環境変数GRPC_PROXY_EXP
を設定することを提案しましたgRPC 呼び出しをプロキシの背後で機能させるため。ノードを実行していたシェルで環境変数を設定export GRPC_PROXY_EXP="$https_proxy"
し、同じ問題でサンプルを再度実行しようとしました。$http_proxy
my ,$https_proxy
変数は同じであることに注意してください。
プロキシなしで wifi ネットワークに接続すると、同じマシンから同じサンプルが動作します。パケット分析は、tcpdump
使用中の 2 つの TCP 接続 (個別のポート) があることを示しています。2 番目の接続は、 (最初の TCP 接続と同様に) CLIENT_HELLO
最初に認証して HTTPS プロキシにメッセージを送信する必要があるときに、すぐに TLS メッセージを開始します。CONNECT
何か不足していますか、それともダイアログフロー (google-gax / grpc) ノード ライブラリの問題ですか?
node.js - nodejs grpc サーバーで圧縮を有効にする
grpc-nodejs サーバーで圧縮を有効にする方法はありますか?
圧縮されたデータを圧縮/解凍できますが、応答を返すときに圧縮できないため、実装することは可能のようです。
テスト用の nodejs サーバーを起動し、python クライアントを使用して対話しました。転送されたバイト数を取得するためにサーバーとクライアントの間の対話を MITM で編集し、nc
圧縮の効果を確認しました。
Python クライアント経由でリクエストを行いながらメタデータを送信'grpc.default_compression_algorithm'
したところ、クライアントから送信されたデータは圧縮されていましたが、サーバーから返されたデータは圧縮されていませんでした。( sent 815, rcvd 300324
echo grpc サービスの場合)。
nodejs サーバー側でメタデータを設定しても役に立ちません。圧縮されていないデータが送信されます。
これが可能なはずだと思う理由は、圧縮されたリクエストを読み取ることができたからです。また、npm grpc パッケージは grpc バイナリのラッパーです。nm grpc_node.node | grep gzip
返品の実行