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

相关推荐
多加点辣也没关系3 小时前
Redis 的安装(详细教程)
数据库·redis·缓存
数据库小学妹3 小时前
数据库连接池避坑指南:告别“连接超时”与“资源耗尽”,让系统跑得更快!
数据库·redis·sql·mysql·缓存·dba
難釋懷4 小时前
Redis网络模型-IO多路复用模型-poll模式
网络·数据库·redis
环流_9 小时前
Redis中string类型的应用场景
数据库·redis·缓存
环流_9 小时前
redis中list类型
数据库·redis·list
环流_11 小时前
redis中hash的应用场景
数据库·redis·哈希算法
phltxy12 小时前
Redis Java 集成到 Spring Boot
数据库·redis·git
环流_12 小时前
redis中list应用场景
数据库·redis·list
難釋懷12 小时前
Redis网络模型-基于epoll的服务器端流程
网络·数据库·redis
万邦科技Lafite13 小时前
京东商品详情 API 接口全面讲解
java·数据库·redis·api·电商开放平台