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

相关推荐
白仑色13 分钟前
Redis 如何保证数据安全?
数据库·redis·缓存·集群·主从复制·哨兵·redis 管理工具
孤独得猿14 分钟前
Redis类型之Hash
redis·算法·哈希算法
浩浩测试一下1 小时前
02高级语言逻辑结构到汇编语言之逻辑结构转换 if (...) {...} else {...} 结构
汇编·数据结构·数据库·redis·安全·网络安全·缓存
TinpeaV1 小时前
(JAVA)自建应用调用企业微信API接口,实现消息推送
java·redis·企业微信·springboot·springflux
菜鸟康5 小时前
Redis7学习--持久化机制 RDB与AOF
redis
2301_793086877 小时前
Redis 03 redis 缓存异常
数据库·redis·缓存
在未来等你11 小时前
RabbitMQ面试精讲 Day 19:网络调优与连接池管理
性能优化·消息队列·rabbitmq·高并发·连接池·面试准备·网络调优
cui_win21 小时前
redis 内存使用率高居高不下,如何分析 key占用情况
数据库·redis·junit·rdb
Techie峰1 天前
Redis Key过期事件监听Java实现
java·数据库·redis
hj10431 天前
redis开启局域网访问
数据库·redis·缓存