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

相关推荐
想摆烂的不会研究的研究生33 分钟前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
至善迎风5 小时前
Redis完全指南:从诞生到实战
数据库·redis·缓存
QQ_4376643147 小时前
Redis协议与异步方式
数据库·redis·bootstrap
oMcLin8 小时前
如何在 Debian 10 上配置并优化 Redis 集群,确保低延迟高并发的实时数据缓存与查询
redis·缓存·debian
Codeking__11 小时前
Redis初识——什么是Redis
数据库·redis·mybatis
Full Stack Developme11 小时前
Redis 可以实现哪些业务功能
数据库·redis·缓存
ohoy12 小时前
RedisTemplate 使用之Set
java·开发语言·redis
想摆烂的不会研究的研究生13 小时前
每日八股——Redis(2)
数据库·redis·缓存
optimistic_chen13 小时前
【Redis系列】主从复制
linux·数据库·redis·缓存·中间件·命令行·主从复制
indexsunny13 小时前
互联网大厂Java面试实战:Spring Boot与微服务在电商场景的应用解析
java·spring boot·redis·微服务·kafka·gradle·maven