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

相关推荐
CopyLower2 小时前
解决 Redis 缓存与数据库一致性问题的技术指南
数据库·redis·缓存
chunfeng—6 小时前
Redis相关命令详解与原理(一)
数据库·redis·缓存
小刘|16 小时前
Redis 中简单动态字符串(SDS)的深入解析
数据库·redis·bootstrap
pqq的迷弟18 小时前
Redis的过期设置和策略
数据库·redis
不剪发的Tony老师18 小时前
Redis 8.0正式发布,再次开源为哪般?
数据库·redis
鱼儿也有烦恼20 小时前
Redis最新入门教程
数据库·redis·缓存
风象南1 天前
Redis中6种缓存更新策略
redis·后端
码码哈哈0.01 天前
2025最新:3分钟使用Docker快速部署Redis集群
redis·docker·容器
L_591 天前
火影bug,未保证短时间数据一致性,拿这个例子讲一下Redis
redis·bug·springcloud
秀才恶霸1 天前
04-redis
数据库·redis·缓存