はじめに
以前MagicOnionの導入方法を紹介させていただきましたが、記事を公開した後Cysharp様がYetAnotherHttpHandlerをリリースされていたので導入方法を紹介したいと思います。
前回の記事のUnityインストール手順とクライアントコード以外は同じになります。
インストール手順
プロジェクト設定
Api Compatibility Levelを.NET Frameworkに
Scripting Define Symbolsに以下を追加
- USE_GRPC_NET_CLIENT
- USE_GRPC_NET_CLIENT_ONLY
YetAnotherHttpHandlerインストール
Window/PackageManagerの+Add package from git urlに以下を追加してパッケージ追加
https://github.com/Cysharp/YetAnotherHttpHandler.git?path=src/YetAnotherHttpHandler#v0.1.0
最新のURLが変わる可能性があるので、YetAnotherHttpHandlerのGitHubページをご確認ください
以下のページから以下をダウンロードしてパッケージインポート
- Cysharp.Net.Http.YetAnotherHttpHandler.Dependencies.unitypackage
- Grpc.Net.Client.Dependencies.unitypackage
MessagePackインストール
MessagePackのリリースページからUnityPackageをダウンロード
すべてを選択してインポートした後、YetAnotherHttpHandlerの依存パッケージに含まれていた
Plugins/System.Runtime.CompilerServices.Unsafe
を削除
MagicOnionインストール
リリースページから最新のUnityPackageを入手
Pluginsの選択を外してインポート実行
Unityクライアントコード
using MagicOnion;
public interface IMyFirstService : IService<IMyFirstService>
{
UnaryResult<int> SumAsync(int x, int y);
}
using Cysharp.Net.Http;
using Grpc.Net.Client;
using MagicOnion.Client;
using UnityEngine;
public class Sample : MonoBehaviour
{
void Start()
{
CallTest();
}
private async void CallTest()
{
var handler = new YetAnotherHttpHandler();
handler.Http2Only = true;
var options = new GrpcChannelOptions { HttpHandler = handler, UnsafeUseInsecureChannelCallCredentials = false };
var channel = GrpcChannel.ForAddress("http://localhost:5000", options);
var client = MagicOnionClient.Create<IMyFirstService>(channel);
var result = await client.SumAsync(1, 2);
Debug.Log($"Result: {result}");
await channel.ShutdownAsync();
}
}
まとめ
前回の記事で簡単に導入できるそうと追記しましたが、それぞれのパッケージの導入手順通りにやっても導入できなかったのでそこまで簡単ではありませんでした。
気が向いて軽く検証してまとめた記事ですが、ご参考になれば幸いです!