Asp.Net Core使用SignalR进行服务间调用方法示例(2)

AddMessagePackProtocol() 是使用快速和精简的二进制序列化格式进行传输。 在 connection.Closed 加入连接关闭事件,关闭后自动重新连接。 InitOnMethod 初始化服务方回调的监听事件

private void InitOnMethod() { connection.On<string>("callback",(msg)=> { Console.WriteLine($"------------{msg}----------"); }); }

connection.StartAsync() 启动连接。

添加两个请求服务端的方法

一个有返回值,一个无返回值。

public async Task<dynamic> RequestServer1() { var result = await connection.InvokeAsync<dynamic>("Excute", "SignalRServer1.Services.IMyService", "SayHello",new object[] { }); return result; } public async Task RequestWithoutResult() { await connection.SendAsync("ExcuteWithoutResult", "SignalRServer1.Services.IMyService", "Sleep", new object[] { }); }

需要返回值的我们使用 connection.InvokeAsync() 方法

不需要返回值的我们使用 connection.SendAsync() 方法

将SignalRClient以单例形式注册依赖注入

在 Startup.cs 中的 ConfigureServices 方法中添加 services.AddSingleton<SignalRClient>() 。

使用SignalRClient请求服务

在控制器中将SignalRClient注入

private readonly SignalRClient _signalRClient; public ValuesController(SignalRClient signalRClient) { _signalRClient = signalRClient; } // GET api/values [HttpGet] public async Task<ActionResult<IEnumerable<string>>> Get() { var str = await _signalRClient.RequestServer1().ConfigureAwait(false); await _signalRClient.RequestWithoutResult().ConfigureAwait(false); return new string[] { str }; }

在请求中同时调用一个有返回值,一个无返回值的方法。无返回值的方法在任务执行完后执行一个回调。

启动服务

Asp.Net Core使用SignalR进行服务间调用方法示例

 

Asp.Net Core使用SignalR进行服务间调用方法示例

 

可以看到服务调用已经成功 task done是我们无返回值调用那个方法中接收到回调时的输出.

connection.On<string>("callback",(msg)=> { Console.WriteLine($"------------{msg}----------"); });

以上就是我简单做的一个DEMO。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdsjzw.html