Signalr实时通讯
我们直接来干货~~~~~~觉得好推荐一下哈 研究不易
参考–https://www.jb51.net/article/133202.htm 这是基本教程
下面是重点:
如果你想允许跨域
具体代码如下
app.Map(“/signalr”, map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
EnableJSONP = true//跨域的关键语句
};
map.RunSignalR(hubConfiguration);
});
如果你想服务器主动推送消息给客户端 —这里指的是不通过链接的方式(即服务器广播效果)
建立一个公用hepler
代码中:
1 class SignalRHepler 2 { 3 4 /// <summary> 5 /// 获取通讯类上下文 6 /// </summary> 7 static IHubContext _hubContext; 8 // 定义一个静态变量来保存类的实例 9 private static SignalRHepler uniqueInstance; 10 11 // 定义一个标识确保线程同步 12 private static readonly object locker = new object(); 13 14 // 定义私有构造函数,使外界不能创建该类实例 15 public static SignalRHepler Instance 16 { 17 get 18 { 19 // 如果类的实例不存在则创建,否则直接返回 20 if (uniqueInstance == null) 21 { 22 lock (locker) 23 { 24 uniqueInstance = new SignalRHepler(); 25 _hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); 26 } 27 } 28 return uniqueInstance; 29 } 30 } 31 /// <summary> 32 /// 推送消息 33 /// </summary> 34 public void BroadcastMessage(List<B2cmesremind> model) 35 { 36 if (model != null && model.Count > 0) 37 { 38 HubContext.Clients.All.sendMessage(model); 39 } 40 } 41 /// <summary> 42 /// 发送消息 43 /// </summary> 44 /// <param name="companyId">用户CompanyId</param> 45 public void BatchSend(string companyId) 46 { 47 var list = NetWork.WcfHelper.TravelHelper.GetList_B2cmesremind(new Dictionary<string, object> { 48 { nameof(B2cmesremind.IsDeleted),0}, 49 { nameof(B2cmesremind.IsRead),0}, 50 { nameof(B2cmesremind.CompanyId),companyId} 51 }); 52 BroadcastMessage(list); 53 } 54 }
可以看出来
HubContext.Clients.All.sendMessage(model); 中
sendMessage方法是自己定义的客户端接受方法
至此,大功告成 有问题联系我就是