Unity
MagicOnion は Unity との統合をサポートしています。これは IL2CPP のサポートだけでなく、Unity アプリケーション上で MagicOnion をより使いやすくするための機能も含まれます。
Unity での gRPC チャンネル管理の統合
MagicOnion は gRPC チャンネルをラップし、Unity のライフサイクルで管理する仕組みを提供します。 これにより、アプリケーションや Unity エディタがフリーズすることを防ぎ、チャンネルと StreamingHub を一か所で解放することができます。
また、エディタ拡張機能を提供しチャンネルの通信状態を表示する機能も提供します。
備考
データレートはメソッドのメッセージ本体のみを対象として計算され、ヘッダーや Trailer、ハートビートは含まれません。
API
MagicOnion.GrpcChannelx
クラスGrpcChannelx.ForTarget(GrpcChannelTarget)
メソッドGrpcChannelx.ForAddress(Uri)
メソッドGrpcChannelx.ForAddress(string)
メソッド
MagicOnion.Unity.GrpcChannelProviderHost
クラスGrpcChannelProviderHost.Initialize(IGrpcChannelProvider)
メソッド
MagicOnion.Unity.IGrpcChannelProvider
インターフェースDefaultGrpcChannelProvider
クラスLoggingGrpcChannelProvider
クラス
使用方法
1. Unity プロジェクトで GrpcChannelx
を使用する準備をする
アプリケーション内でチャンネルを作成する前に、管理されるプロバイダーホストを初期化する必要があります。
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
public static void OnRuntimeInitialize()
{
// Initialize gRPC channel provider when the application is loaded.
GrpcChannelProviderHost.Initialize(new DefaultGrpcChannelProvider(() => new GrpcChannelOptions()
{
HttpHandler = new YetAnotherHttpHandler()
{
Http2Only = true,
},
DisposeHttpClient = true,
}));
}
GrpcChannelProviderHost は DontDestroyOnLoad として作成され、アプリケーションが実行中は常に維持されるため削除しないでください。
2. GrpcChannelx.ForTarget
または GrpcChannelx.ForAddress
を使用してチャンネルを作成する
GrpcChannel.ForAddress
の代わりに GrpcChannelx.ForTarget
または GrpcChannelx.ForAddress
を使用してチャンネルを作成します。
var channel = GrpcChannelx.ForTarget(new GrpcChannelTarget("localhost", 12345, isInsecure: true));
// or
var channel = GrpcChannelx.ForAddress("http://localhost:12345");
3. GrpcChannel
の代わりにチャンネルを使用する
var channel = GrpcChannelx.ForAddress("http://localhost:12345");
var serviceClient = MagicOnionClient.Create<IGreeterService>(channel);
var hubClient = StreamingHubClient.ConnectAsync<IGreeterHub, IGreeterHubReceiver>(channel, this);
Unity Editor 拡張 (エディターウィンドウとインスペクター)
Window
-> MagicOnion
-> gRPC Channels
からチャンネルウィンドウを開けます。