【SignalR全套系列】之在.Net6中实现SignalR分组通信

微信公众号:趣编程ACE
关注可了解更多的.NET日常实战开发技巧,如需源码 请公众号后台留言 源码;
[如果觉得本公众号对您有帮助,欢迎关注]

前文回顾

【SignalR全套系列】之在.Net6中实SignalR通信


SignalR中给客户端分组调用演示

原文链接(含视频)


服务端代码实现

1.Program.cs 文件编写

1// 捕获一个 /groups 节点 映射到 GroupHub 类里面
2app.MapHub<GroupHub>("/groups");

2.自定义一个GroupHub

 1// GroupHub  类继承 Hub 类
 2public class GroupHub : Hub
 3    {
 4        // 添加组 根据客户端的ConnectionId 添加到组名 为 testGroup 的组中去
 5        public Task Join() => Groups.AddToGroupAsync(Context.ConnectionId, "testGroup");
 6
 7        // 从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();
 6
 7        // 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通信方法的补充,详细用法请参考视频~感谢~

如需源码:
​​​​​​​

posted @ 2022-06-10 09:47  【趣编程】.NET  阅读(482)  评论(0编辑  收藏  举报