直接调用
直接调用,则是不使用任何代理,直接Call RPC,使用比较简单。
【TCP协议】
static void JsonRpcClientInvokeByTcp()
{
JsonRpcClient jsonRpcClient = new JsonRpcClient();
jsonRpcClient.Setup(new RRQMConfig()
.SetRemoteIPHost("127.0.0.1:7705")
.SetJRPT(JRPT.Tcp));
jsonRpcClient.Connect();
Console.WriteLine("连接成功");
string result = jsonRpcClient.Invoke<string>("server/testjsonrpc", InvokeOption.WaitInvoke, "RRQM");
Console.WriteLine($"Tcp返回结果:{result}");
JObject obj = new JObject();
obj.Add("A", "A");
obj.Add("B", 10);
obj.Add("C", 100.1);
JObject newObj = jsonRpcClient.Invoke<JObject>("server/testjobject", InvokeOption.WaitInvoke, obj);
Console.WriteLine($"Tcp返回结果:{newObj}");
}
【Http协议】
static void JsonRpcClientInvokeByHttp()
{
JsonRpcClient jsonRpcClient = new JsonRpcClient();
jsonRpcClient.Setup(new RRQMConfig()
.SetRemoteIPHost("http://127.0.0.1:7706/jsonrpc")
.SetJRPT(JRPT.Http));
jsonRpcClient.Connect();
Console.WriteLine("连接成功");
string result = jsonRpcClient.Invoke<string>("server/testjsonrpc", InvokeOption.WaitInvoke, "RRQM");
Console.WriteLine($"Http返回结果:{result}");
JObject obj = new JObject();
obj.Add("A", "A");
obj.Add("B", 10);
obj.Add("C", 100.1);
JObject newObj = jsonRpcClient.Invoke<JObject>("server/testjobject", InvokeOption.WaitInvoke, obj);
Console.WriteLine($"Http返回结果:{newObj}");
}
【亦或者直接使用字符串调用】
在TCP协议时,必须以\r\n结尾。在Http协议时,以Post方式即可。
{"jsonrpc": "2.0", "method": "server/testjsonrpc", "params":"RRQM", "id": 1}
代理调用RPC
代理调用的便捷在于,不用再纠结调用的参数类型正不正确,因为这些,代理工具都会替你做好。
如何生成获取代理文件?
调用
当代理被客户端获取以后,客户端项目中会多出一个RRQMProxy的文件(或者如果是服务器生成的本地代理,则需要复制到客户端项目中),在该文件中,则包含了所有的代理方法和代理类,可直接由代理类发起调用。
屏幕截图.png
JsonRpcClient jsonRpcClient = new JsonRpcClient(JRPT.Http);
jsonRpcClient.Setup("http://127.0.0.1:7706/jsonrpc");
jsonRpcClient.Connect();
Server server= new Server(jsonRpcClient);//Server是生成的代理类。
server.TestJsonRpc("RRQM");//代理调用