微信公眾號:趣編程ACE
關注可了解更多的.NET日常實戰開發技巧,如需源碼 請公眾號后臺留言 源碼;
[如果覺得本公眾號對您有幫助,歡迎關注]
前文回顧
【SignalR全套系列】之在.Net6中實SignalR通信SignalR中給客戶端分組調用演示
服務端代碼實現
1.Program.cs 文件編寫
1//?捕獲一個?/groups?節點?映射到?GroupHub?類里面
2app.MapHub<GroupHub>("/groups");
2.自定義一個GroupHub類
1//?GroupHub??類繼承?Hub?類2public?class?GroupHub?:?Hub3????{4????????//?添加組?根據客戶端的ConnectionId?添加到組名?為?testGroup?的組中去5????????public?Task?Join()?=>?Groups.AddToGroupAsync(Context.ConnectionId,?"testGroup");67????????//?從testGroup?去除對應的客戶端8????????public?Task?Remove()?=>?Groups.RemoveFromGroupAsync(Context.ConnectionId,?"testGroup");9
10????????//?只有所在組的客戶端可以接收到服務端發送的消息
11????????public?Task?Message()?=>?Clients
12????????????.Groups("testGroup")
13????????????.SendAsync("groupMessages",?new?TransData(Guid.NewGuid(),?"屬于?testGroup?才能接收到數據"));
14????}
客戶端代碼實現
1????<script?src="signalr.js"></script>2????<script>3????????let?connection?=?new?signalR.HubConnectionBuilder()4????????????.withUrl("/groups")?//?調用?groups?路由5????????????.build();67????????//?groupMessages?鉤子函數8????????connection.on('groupMessages',?data?=>?console.log("message",?data));9
10????????//?和服務端建立連接?及其回調函數
11????????connection.start().then(()?=>?console.log("connected"));
12
13????????//?調用Hub?中定義的方法
14????????const?join?=?()?=>?connection.send('Join');
15????????const?remove?=?()?=>?connection.send('Remove');
16????????const?messageMethod?=?()?=>?connection.send('Message');
17
18
19????</script>
以上便是對上文SignalR通信方法的補充,詳細用法請參考視頻~感謝~