dede 企业网站模板,宁波外贸网站推广优化,html5导航网站,四川宜宾今天最新消息假设聊天室程序被部署在两台服务器上#xff0c;客户端1、2连接到了服务器A上的ChatRoomHub#xff0c;客户端3、4连接到服务器B上的ChatRoomHub#xff0c;那么客户端1发送群聊消息时#xff0c;只有客户端1、2能够收到#xff0c;客户端3、4收不到#xff1b;在客户端3…假设聊天室程序被部署在两台服务器上客户端1、2连接到了服务器A上的ChatRoomHub客户端3、4连接到服务器B上的ChatRoomHub那么客户端1发送群聊消息时只有客户端1、2能够收到客户端3、4收不到在客户端3发送群聊消息只有客户端3、4能够收到客户端1、2收不到。因为这两台服务器之间的ChatRoomHub没有通信。可以让多台服务器上的集线器连接到一个消息队列中通过这个消息队列完成跨服务器的消息投递。
微软官方提供了用Redis服务器来解决SignalR部署在分布式环境中数据同步的方案Redis backplane其使用方法如下
NuGetMicrosoft.AspNetCore.SignalR.StackExchangeRedis
builder.Services.AddSignalR().AddStackExchangeRedis(127.0.0.1, opt
{opt.Configuration.ChannelPrefix SignalR_MyHub_;
});
AddStackExchangeRedis第一个参数为Redis服务器的连接字符串如果有多个SignalR应用程序连接同一台Redis服务器需要为每个应用程序配置唯一的ChannelPrefix