假设我们有 2 个 Redis 服务器背板,一个作为主服务器,另一个作为从服务器。
每个 Web 应用程序都在使用 SignalR,以便在发生时将内容推送到连接的客户端,并将它们连接到我在 Application_Start 中使用的背板
GlobalHost.DependencyResolver.UseRedis(host, port, "", new[] {"signalr.key"});
RouteTable.Routes.MapHubs();
现在,如果 Master Redis Backplane 出现故障,我想将 Slave Redis 服务器提升为 Master,并将所有现有连接从 Web 服务器切换到新的 Master Redis 服务器。
为了将从服务器提升为主服务器,我使用以下代码
using (var conn = new RedisConnection(host, port, allowAdmin: true))
{
if (conn.ServerType != ServerType.Master)
{
conn.Open();
var makeMaster = conn.Server.MakeMaster();
var info = conn.Wait(conn.GetInfo());
conn.Wait(makeMaster);
}
}
这似乎可以完成工作。
您能否帮助我了解如何通知我的 Web 应用程序背板已更改连接到新应用程序的方式,以维持连接的客户端之间的通信?