學習helloworld
server用.net
client有.net的控制臺 和 unity
server端 直接使用vs2022創建(需自行看有無裝asp.net哦),搜索gPRC,使用6.0吧,創建工程后直接F5跑起來,服務端到此完成
.net控制臺client,創建新的控制臺,使用NuGet,然后導入server端的Protos文件夾
學習helloWrold就先手動copy下目錄咯.然后在vs上把其加入ItemGroup中去
編輯client的代碼咯
using Grpc.Net.Client;
using server;
using (var channel = GrpcChannel.ForAddress("https://localhost:5001"))//這個端口要看服務端跑起來的輸出日志上的端口哦
{var client = new Greeter.GreeterClient(channel);var reply = client.SayHello(new HelloRequest(){Name = "客戶端 sayHeloName"});var msg = reply.Message;Console.WriteLine(msg);
}
把服務器跑起來.然后在client跑起來 就能看到log了
server用.net
client有.net的控制臺就跑通了
現用Unity連起來,就比較麻煩.這里需要看gitHub
https://github.com/doctorseus/grpc-dotnet-unity
第一種方案:把人家的Plugins直接copy到自己的目錄
第二種方案就是在自己的server用NuGet安裝人家對應的dll,再用everyThing搜索對應含有NuGet目錄的dll_copy到自己plugins目錄,舉一個例子
這里要裝挺多東西的,建議使用第一種方案.還要把人家GRPCBestHttpHandler.cs,PushPullStream.cs,ServerStreamHttpContent.cs,copy到自己項目中去
再去gitHub的把Best HTTP也導入自己的unity項目中去.
然后去自己Server端項目中,右鍵greet.proto,重新生成下.生成后把Greet.cs和GreetGRPC.cs copy到unity項目中去 (右鍵server在磁盤上用everyThing找)
到此unity的準備工作 都完成了
建新腳本 TestGRPC.cs
using Grpc.Net.Client;
using Grpc.Net.Extensions;
using server;
using UnityEngine;
public class TestGRPC : MonoBehaviour
{async void Start(){Debug.LogError("---開始---");var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions(){HttpHandler = new GRPCBestHttpHandler()});var client = new Greeter.GreeterClient(channel);var res = await client.SayHelloAsync(new HelloRequest(){Name = "造就helloworld"});Debug.LogError(res.Message);Debug.LogError("---結束---");}
}
把TestGRPC.cs 掛在場景中去,把server跑起來…然后在Unity,跑起來.就能看到通信了
https://github.com/SendSi/gRPC_client_server