このプロジェクトでは、Envoy プロキシを使用して Web クライアントとサーバー間の単純な gRPC 通信をセットアップする方法を示します。
私はこの目的のために gRPC-Web ライブラリを使用しています。 gRPC-Web は、Web アプリケーションが gRPC サービスと対話できるようにする JavaScript クライアント ライブラリです。ブラウザーは HTTP/2 または標準の gRPC で使用されるバイナリ プロトコルをサポートしていないため、gRPC-Web は、HTTP/1.1 または HTTP/2 を使用し、ブラウザーが処理できる方法で gRPC メッセージをエンコードすることでギャップを埋める方法を提供します。 gRPC-Web の仕組みは次のとおりです:
リクエストは gRPC-Web 形式でエンコードされ、通常はバイナリ gRPC ペイロードに Base64 エンコードを使用します。クライアントはこのリクエストを HTTP/1.1 または HTTP/2 経由で送信します。
gRPC サーバーは、通信に HTTP/2 を使用して、ネイティブ gRPC リクエストであるかのようにリクエストを処理します。
gRPC サーバーは、受信した gRPC リクエストを処理し、必要なビジネス ロジックを実行して、応答を生成します (この例では、Go で記述されたアプリケーションです)。応答は標準の gRPC 形式でエンコードされ、Envoy に送り返されます。
Envoy は gRPC 応答を受信し、それを gRPC-Web 形式 (通常は Base64 を使用) でエンコードし、HTTP/1.1 または HTTP/2 経由で gRPC-Web クライアントに送り返します。 gRPC 応答に含まれるメタデータ (ステータス コードなど) は適切に変換されます。
gRPC-Web クライアントは応答をデコードし、Web アプリケーション内で使用可能な形式に変換します。 Web アプリケーションは応答を処理し、必要に応じて UI を更新したりエラーを処理したりします。
注: クライアント側および双方向ストリーミングは現在サポートされていません (ストリーミング ロードマップを参照)
これに関する GitHub プロジェクトがあります:
https://github.com/ehsaniara/gRPC-web-example
このプロジェクトに関連する GitHub プロジェクトは次のとおりです
https://github.com/ehsaniara/gRPC-web-example
以上がWeb とサーバー間の gRPC。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。