Załóżmy, że mamy 2 Backplanes serwera Redis, jeden jako Master, a drugi jako Slave.SignalR - Przełącz między różnymi płaszczyznami Redis
Każda aplikacja internetowa korzysta SignalR aby przesunąć zawartość do podłączonych klientów, jak to się dzieje i aby podłączyć je do płyty montażowej używam w Application_Start
GlobalHost.DependencyResolver.UseRedis(host, port, "", new[] {"signalr.key"});
RouteTable.Routes.MapHubs();
Teraz w przypadku Mistrza Redis płytka montażowa nie , Chciałbym promować serwer Slave Redis na Master i przełączać wszystkie istniejące połączenia z serwerów internetowych na nowy Master Redis Server.
W celu promowania serwera podrzędnego do Master I używam następujący kod
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);
}
}
który wydaje się do pracy.
Czy możesz mi pomóc, w jaki sposób mogę poinformować moją aplikację internetową, że płyta montażowa zmieniła sposób połączenia z nowym, aby podtrzymać komunikację między moimi połączonymi klientami?
To również działa, aby zmienić Master, ale znowu nie mogę znaleźć sposobu na poinformowanie SignalR, że nastąpiła zmiana w backplane. Może potrzebuję "remapować" Huby lub coś innego, ale cokolwiek próbowałem, nie działa. – ppolyzos