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

相关推荐
消失的旧时光-194312 小时前
第六篇:Redis Hash——一个用户对象应该保存成 JSON,还是保存成 Hash?
redis·json·哈希算法
空谷有来人15 小时前
docker安装redis
redis·docker·容器
不谈恋爱的猫15 小时前
redis哨兵模式
数据库·redis·mybatis
clamlss16 小时前
Redis Key 和 Value 设计原则
redis
月落归舟18 小时前
Redis 三种消息队列实现方案
数据库·redis·list
智购科技智能售货柜18 小时前
自动售货机商品识别YOLO模型训练实战:从6万张图片到98%识别率的完整复盘~YH
运维·服务器·数据库·人工智能·redis·物联网·yolo
ashiho19 小时前
【Redis】原理篇 3w字详解
数据库·redis·缓存·bootstrap
土司大王21 小时前
黑马点评——分布式锁与 Redis 消息队列
数据库·redis·分布式
ningmengjing_1 天前
Redis 从入门到实战:Python操作全攻略
数据库·redis·python
一嘴一个橘子2 天前
Redis List 数据类型
redis