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

相关推荐
sghuter2 小时前
Ubuntu安装Redis
redis·ubuntu·bootstrap
深蓝轨迹7 小时前
Redis 消息队列
java·数据库·redis·缓存·面试·秒杀
于樱花森上飞舞8 小时前
【Redis】初识Redis
数据库·redis·缓存
努力学习的小廉10 小时前
redis学习笔记(九)—— Redis 持久化
redis·笔记·学习
呆子也有梦10 小时前
redis 的延时双删、双重检查锁定在游戏服务端的使用(伪代码为C#)
redis·后端·游戏·缓存·c#
GDAL11 小时前
BoltDB vs Redis 读性能对比:实测表现与原理差异
redis·boltdb
Fang fan12 小时前
Netty入门
java·开发语言·redis·分布式·python·哈希算法
入瘾12 小时前
Redis 服务启动失败
数据库·redis·缓存
XDHCOM16 小时前
Redis远程连接命令详解,分享高效配置与安全实践技巧
前端·redis·安全
Rsun045511 天前
Redis中实现访问量计数
数据库·redis·缓存