安装
nuget 安装RRQMSocket.RPC.AspNetCore。
定义服务
在服务器端中新建一个类,继承于ServerProvider类(或实现IServerProvider),然后在该类中写公共方法,并用TouchRpc属性标签标记,如果方法有重载,需要重新指定函数键。
- 支持out,ref关键字。
- 支持代理生成注释。
支持注入。
public class TestServerProvider: ServerProvider{private readonly ILogger<TestServerProvider> m_logger;/// <summary>/// 支持注入/// </summary>/// <param name="service"></param>/// <param name="logger"></param>public TestServerProvider(IWSTouchRpcService service,ILogger<TestServerProvider> logger){this.m_logger = logger;}[Description("登录")][TouchRpc]public bool Login(string account, string password){if (account == "123" && password == "abc"){m_logger.LogInformation("True");return true;}m_logger.LogInformation("False");return false;}}
注入服务
在ConfigureServices时,添加AddWSTouchRpc,并且配置相关项。
public static RpcStore RpcStore { get; set; } = new RpcStore();// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services){//声明一个适应于Asp,兼容IServiceCollection服务的容器IContainer container = new AspNetCoreContainer(services);//向Asp服务中添加IWSTouchRpcServicevar touchRpcService = services.AddWSTouchRpc(new RRQMSocket.RRQMConfig().SetContainer(container));//设置IOC容器RpcStore.Container = container;//和RpcStore共享容器RpcStore.AddRpcParser(nameof(touchRpcService), touchRpcService);//添加解析器RpcStore.RegisterAllServer();//注册所有服务。services.AddControllers();// Swaggerservices.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo { Title = "API Demo", Version = "v1" });});}
启用中间件
首先必须启用WebSocket。其次使用UseWSTouchRpc即可。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}// Swaggerapp.UseSwagger();app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Demo v1");});app.UseWebSockets();//必须先使用WebSocketapp.UseWSTouchRpc("/wstouchrpc");//该操作不会影响原有的WebSocket,只要url不同即可。app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}
