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

相关推荐
S-X-S6 分钟前
Java面试题-Redis缓存
java·redis·缓存
记得开心一点嘛3 小时前
Redis --- 使用HyperLogLog实现UV(访客量)
redis·缓存·uv
lixww.cn3 小时前
ASP.NET Core SignalR的协议协商
asp.net core·signalr
疯一样的码农6 小时前
升级RAG应用程序与Redis向量库
redis
EterNity_TiMe_8 小时前
【Linux高级IO】五种IO模型
linux·运维·服务器·数据库·redis·学习
Lsland..9 小时前
整合 Redis 分布式锁:从数据结构到缓存问题解决方案
spring boot·redis·分布式·缓存
web1508509664113 小时前
如何使用Spring Boot框架整合Redis:超详细案例教程
spring boot·redis·后端
昨天今天明天好多天14 小时前
【Redis】Linux、Windows、Docker 环境下部署 Redis
linux·windows·redis
lixww.cn1 天前
ASP.NET Core对JWT的封装
asp.net core·jwt·authorize