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

相关推荐
椰椰椰耶1 小时前
【redis】reids 客户端的连接(Windows和mac)
windows·redis·macos
Pitayafruit4 小时前
【📕分布式锁通关指南 08】源码剖析redisson可重入锁之释放及阻塞与非阻塞获取
redis·分布式·后端
jay丿9 小时前
Django 集成 Redis 数据库指南
数据库·redis·django
用户905558421480510 小时前
设置SO_TIMEOUT,为什么还有大于超时阈值的请求?扒一下HotSpot源码看看
redis
啊sen丶11 小时前
消息队列的特性与使用场景:Kafka、ActiveMQ、RabbitMQ与RocketMQ的深度剖析
分布式·kafka·消息队列·rabbitmq·rocketmq·activemq
chenOnlyOne14 小时前
Spring Boot实战:MySQL与Redis数据一致性深度解析与代码实战
spring boot·redis·mysql
小金三岁半18 小时前
云服务器安装redis
运维·服务器·redis
失业写写八股文18 小时前
Redis中keys命令的缺点
redis·后端
1 Byte20 小时前
Centos7使用docker搭建redis集群
redis·docker·容器·redis集群搭建
程序视点20 小时前
Redis集群机制及一个Redis架构演进实例
java·redis·后端