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

相关推荐
2401_8370885021 小时前
stringRedisTemplate.opsForHash().entries
java·redis
爱敲键盘的猴子1 天前
Redis内存回收,缓存问题
redis
爬山算法1 天前
Redis(110)Redis的发布订阅机制如何使用?
前端·redis·bootstrap
蓝象_1 天前
docker下载配置redis
redis·docker·容器
升鲜宝供应链及收银系统源代码服务1 天前
升鲜宝生鲜配送供应链管理系统---PMS--商品品牌多语言存储与 Redis 缓存同步实现
java·开发语言·数据库·redis·缓存·开源·供应链系统
苦学编程的谢1 天前
Redis_8_List
数据库·redis·缓存
java1234_小锋1 天前
REDIS集群会有写操作丢失吗?为什么
数据库·redis·缓存
向阳而生,一路生花1 天前
redis离线安装
java·数据库·redis
little_xianzhong1 天前
三个常听到的消息/中间件MQTT RabbitMQ Kafka
java·笔记·中间件·消息队列
hzk的学习笔记1 天前
Redisson 的 Watchdog 机制
数据库·redis·分布式·缓存