Signalr实时通讯
生活随笔
收集整理的這篇文章主要介紹了
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 // 定義一個靜態(tài)變量來保存類的實例 9 private static SignalRHepler uniqueInstance; 10 11 // 定義一個標識確保線程同步 12 private static readonly object locker = new object(); 13 14 // 定義私有構造函數,使外界不能創(chuàng)建該類實例 15 public static SignalRHepler Instance 16 { 17 get 18 { 19 // 如果類的實例不存在則創(chuàng)建,否則直接返回 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 /// 發(fā)送消息 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方法是自己定義的客戶端接受方法
至此,大功告成? ?有問題聯系我就是
轉載于:https://www.cnblogs.com/lovemj/p/10149861.html
總結
以上是生活随笔為你收集整理的Signalr实时通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax中 get 和 post 的区别
- 下一篇: 森蓝的E-RT3有ABS吗?