ダーク/ライト切り替え

【Rust】Tonicでgrpcの接続テストをするまで【初学者】

投稿日 2024-02-17T23:07:07.075912+09:00

【Rust】Tonicでgrpcの接続テストをするまで【初学者】

タグ一覧

目次

目次を読み込み中...

VscodeでrustのDev Containerを作り、Tonicを使ったgrpcサーバとクライアントを作り、接続テストをしてみる。接続の結果、お馴染みのHello worldが表示される。

公式GitHub

この記事のコードをまとめたもの

前提条件

  • Vscodeがインストールされている
  • dockerがインストールされている
  • rustのチュートリアル程度の知識はある

DevContainerをつくる

  1. まず、基本のworkspaceとなるフォルダを作り、`.devcontainer`フォルダを作成する。
  2. その中にdevcontainer.jsonとdocker-compose.ymlを作る

[devcontainer.json]

[docker-compose.yml]

ディレクトリ名とファイル名は必ずこの名前にして下さい。名前が違うと機能しません。ファイルの用意が出来たら画面左下の角の方にある><のようなアイコンをクリックするとメニューが出るので、コンテナを再度開くを選ぶとdevcontainerが開く。初回は少し時間がかかるかも。

rust-devcontainer

DevContainerの中にプロジェクトを作る

コンテナが出来たらまずprotobuf-compilerをインストールしなければならない。インストール方法は公式githubに書いてある。使っているディストリビューションによって違う。

サーバーサイドの構築

公式githubのリポジトリでは一つのプロジェクトにサーバとクライアントがまとめて入っていたが、ここではサーバとクライアントで独立した別のプロジェクトを作成することにする。実際に使う際にもサーバとクライアントが同じプロジェクト内にあるのも変だし。という事で、

として、別々のプロジェクトを作り、まずはcd serverでserverディレクトリに移動してサーバー側からコードを書いていく。
[Cargo.toml]

[build.rs] srcフォルダではなくCargo.tomlと同じ階層におくこと

[main.rs]

[proto/helloworld.proto]

クライアントサイドの構築

ここではシンプルなテストなので、Cargo.toml、protoファイル、build.rsのファイルは使いまわしで構わない。同じフォルダ構造で同じ階層にファイルを配置してください。main.rsだけ新規に用意します。

[main.rs]

最終的にはこのようなディレクトリ構造になっていると思います。

tree

テストしてみる

まずserver側でcargo build cargo runしてみる。立ち上がったらclient側でもcargo build cargo runしてみる。上手く行けば、サーバーサイドには

クライアントサイドには

というようなレスポンスがターミナルに表示される。以上で、開通テストは終わりです。

今後

ストリーミング通信を実装したり、セキュリティ対策を施したりとしていきたいと思います。


準備中

このサイトをシェアする

【Rust】Tonicでgrpcの接続テストをするまで【初学者】