SignalR Redis 背板组同步

Posted

技术标签:

【中文标题】SignalR Redis 背板组同步【英文标题】:SignalR Redis Backplane Group synchronization 【发布时间】:2017-01-12 15:43:15 【问题描述】:

SignalR 背板是否像在 Groups.Add 中一样跨服务器同步连接的组?我知道它会发布消息,但不清楚组是否也同步。基本上我想知道网络场中的服务器是否出现故障,其他服务器是否配置了相同的组?

如果有,是否有任何文件支持这一点?

谢谢,

【问题讨论】:

【参考方案1】:

是的,背板确实维护组,它将 serverid 添加到组中,因此您基本上拥有一组组。父组是场中的 serverid。它没有很好地解释,但你可以在这里找到解释:http://www.asp.net/signalr/overview/performance/scaleout-in-signalr

在 cmets 中搜索 group,你会看到更详细的解释,但不是很好。

【讨论】:

这是 cmets 中对组的唯一引用,并且不清楚它的引用:Continue.One 商店客户端(SignalR 客户端)连接代表一个商店的 WebRole 和它连接到的 WebRole 实例connectionId 和 storeID 作为 groupName 进入 Hub 组并使用 Clients.Group(name).send()。然后客户端只接收该商店的消息,但只接收来自该服务器实例的消息。在我有更多这样的客户端连接到其他服务器实例之前,每个客户端都会开始接收其存储的消息,但来自所有 3 个服务器实例。 基本上它的意思是,您有一个基于服务器场中的服务器的组,因此您的消息将被广播到 Clients.serverGroup.userGroup。这样消息就不会多次广播到每个客户端。因此,当一台服务器出现故障时,userGroups 将故障转移到新的 serverGroup。所以是的,它将维护您的组。至于文档......没有更多的事情要做。我认为这就是它的工作方式,我不知道你评论的最后一部分是你正在经历的还是从其他地方粘贴的

以上是关于SignalR Redis 背板组同步的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接

signalR 背板是不是也共享连接?

将 Redis 与 SignalR 一起使用

SignalR:同步组加入

.net core 3.0 Signalr - 07 业务实现-服务端 自定义管理组用户连接

.net core 3.0 Signalr - 07 业务实现-服务端 自定义管理组用户连接