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

相关推荐
洲覆25 分钟前
Redis 核心数据类型:从命令、结构到实战应用
服务器·数据库·redis·缓存
山海不说话1 小时前
Java后端面经(八股——Redis)
java·开发语言·redis
muxin-始终如一2 小时前
MySQL与Redis面试问题详解
数据库·redis·mysql
沧澜sincerely4 小时前
Redis 键空间 & 五大类型
java·redis·docker
不剪发的Tony老师7 小时前
RedisFront:一款免费开源的跨平台Redis客户端工具
数据库·redis·redisfront
麦兜*7 小时前
Redis数据迁移实战:从自建到云托管(阿里云/腾讯云)的平滑过渡
java·spring boot·redis·spring·spring cloud·阿里云·腾讯云
Roye_ack8 小时前
【项目实战 Day7】springboot + vue 苍穹外卖系统(微信小程序 + 微信登录模块 完结)
spring boot·redis·后端·小程序·个人开发·学习方法·苍穹外卖
数据智能老司机8 小时前
用 C/C++ 从零实现 Redis——简介
c++·redis
Roye_ack8 小时前
【项目实战 Day5】springboot + vue 苍穹外卖系统(Redis + 店铺经营状态模块 完结)
java·spring boot·redis·学习·mybatis
Bug生产工厂9 小时前
支付系统缓存策略:Redis实战与最佳实践
redis