ASP.NET Core SignalR的分布式部署

假设聊天室程序被部署在两台服务器上,客户端1、2连接到了服务器A上的ChatRoomHub,客户端3、4连接到服务器B上的ChatRoomHub,那么客户端1发送群聊消息时,只有客户端1、2能够收到,客户端3、4收不到;在客户端3发送群聊消息,只有客户端3、4能够收到,客户端1、2收不到。因为这两台服务器之间的ChatRoomHub没有通信。可以让多台服务器上的集线器连接到一个消息队列中,通过这个消息队列完成跨服务器的消息投递。

微软官方提供了用Redis服务器来解决SignalR部署在分布式环境中数据同步的方案Redis backplane,其使用方法如下

NuGet:Microsoft.AspNetCore.SignalR.StackExchangeRedis

cs 复制代码
builder.Services.AddSignalR().AddStackExchangeRedis("127.0.0.1", opt =>
{
    opt.Configuration.ChannelPrefix = "SignalR_MyHub_";
});

AddStackExchangeRedis第一个参数为Redis服务器的连接字符串,如果有多个SignalR应用程序连接同一台Redis服务器,需要为每个应用程序配置唯一的ChannelPrefix

相关推荐
小钻风336612 小时前
Redis初阶学习
数据库·redis·缓存
赵得C14 小时前
Spring Boot 实现数据库表变更监听的 Redis 消息队列方案
数据库·spring boot·redis·监听
在未来等你16 小时前
Kafka面试精讲 Day 6:Kafka日志存储结构与索引机制
大数据·分布式·面试·kafka·消息队列
在未来等你16 小时前
Kafka面试精讲 Day 3:Producer生产者原理与配置
大数据·分布式·面试·kafka·消息队列
该用户已不存在17 小时前
Redis到底什么,该怎么用
数据库·redis·后端
知彼解己1 天前
Redis 集群模式与高可用机制
数据库·redis·缓存
海梨花1 天前
字节跳动后端 一面凉经
java·redis·学习·leetcode·面经
爱隐身的官人1 天前
新后端漏洞(上)- Redis 4.x5.x 未授权访问漏洞
redis·未授权访问漏洞
Kookoos1 天前
多租户配额与预算:限额、配额周期与突发桶的结算模型(Final)
redis·令牌桶·abp vnext·配额·突发桶·账期结算
洛洛呀。1 天前
Redis基础概述
数据库·redis·缓存