Interní informace služby Azure SignalR Service
Služba Azure SignalR je založená na rozhraní ASP.NET Core SignalR. Podporuje také ASP.NET SignalR tím, že reimplementuje datový protokol služby SignalR ASP.NET nad architekturou ASP.NET Core.
Místní ASP.NET Core SignalR nebo aplikaci SignalR ASP.NET můžete snadno migrovat, aby fungovala se službou SignalR Service, a to změnou několika řádků kódu.
Diagram popisuje typickou architekturu při použití služby SignalR s aplikačním serverem.
Probírají se také rozdíly od aplikace Core SignalR hostované v místním prostředí ASP.NET.
Připojení aplikačního serveru
Aplikační server Core SignalR hostovaný ASP.NET v místním prostředí naslouchá klientům a připojuje je přímo.
Ve službě SignalR už aplikační server nepřijímá trvalá připojení klientů, místo toho:
- Koncový
negotiate
bod je vystavený sadou SDK služby Azure SignalR pro každé centrum. - Koncový bod reaguje na žádosti o vyjednávání klientů a přesměruje klienty do služby SignalR.
- Klienti se připojují ke službě SignalR.
Další informace najdete v tématu Připojení klientů.
Po spuštění aplikačního serveru:
- Pro ASP.NET Core SignalR: Sada SDK služby Azure SignalR otevírá pět připojení WebSocket na centrum ke službě SignalR.
- Pro ASP.NET SignalR: Sada SDK služby Azure SignalR otevírá pět připojení WebSocket na centrum ke službě SignalR a jedno připojení webSocket aplikace.
Počáteční počet připojení je ve výchozím nastavení 5 a je konfigurovatelný pomocí InitialHubServerConnectionCount
možnosti v sadě SDK služby SignalR. Další informace najdete v tématu konfigurace.
Zatímco je aplikační server připojený ke službě SignalR, služba Azure SignalR odesílá na server zprávy vyrovnávání zatížení. Sada SDK pak spustí nová připojení serveru ke službě, aby se zlepšil výkon. Zprávy do a z klientů jsou do těchto připojení multiplexované.
Připojení k serveru jsou trvale připojená ke službě SignalR. Pokud je připojení k serveru odpojené kvůli problému se sítí:
- Všichni klienti obsluhované tímto připojením k serveru se odpojí. Další informace najdete v tématu Přenos dat mezi klientem a serverem.
- Server automaticky znovu připojí klienty.
Připojení klientů
Pokud používáte službu SignalR, klienti se místo aplikačního serveru připojují ke službě. Existují tři kroky k navázání trvalých připojení mezi klientem a službou SignalR.
Klient odešle žádost o vyjednání aplikačnímu serveru.
Aplikační server používá sadu SDK služby Azure SignalR k vrácení odpovědi přesměrování obsahující adresu URL služby SignalR a přístupový token.
- Pro ASP.NET Core SignalR vypadá typická odpověď přesměrování takto:
{ "url":"https://test.service.signalr.net/client/?hub=chat&...", "accessToken":"<a typical JWT token>" }
- V případě ASP.NET SignalR vypadá typická odpověď přesměrování takto:
{ "ProtocolVersion":"2.0", "RedirectUrl":"https://test.service.signalr.net/aspnetclient", "AccessToken":"<a typical JWT token>" }
- Pro ASP.NET Core SignalR vypadá typická odpověď přesměrování takto:
Jakmile klient obdrží odpověď pro přesměrování, použije adresu URL a přístupový token pro připojení ke službě SignalR.
Další informace o službě ASP.NET Core SignalR najdete v tématu Přenosové protokoly.
Přenos dat mezi klientem a serverem
Když je klient připojený ke službě SignalR, modul runtime služby najde připojení serveru, které bude sloužit tomuto klientovi.
- K tomuto kroku dochází pouze jednou a jedná se o mapování 1:1 mezi připojením klienta a serveru.
- Mapování se udržuje ve službě SignalR, dokud se klient nebo server neodpojí.
V tuto chvíli aplikační server obdrží událost s informacemi z nového klienta. Na aplikačním serveru se vytvoří logické připojení k klientovi. Datový kanál se vytváří z klienta na aplikační server prostřednictvím služby SignalR.
Služba SignalR přenáší data z klienta na spárovací aplikační server. Data z aplikačního serveru se odesílají mapovaným klientům.
Služba SignalR Service neukládá ani neukládá zákaznická data, veškerá přijatá zákaznická data se přenášejí na cílový server nebo klienty v reálném čase.
Služba Azure SignalR funguje jako logická vrstva přenosu mezi aplikačním serverem a klienty. Všechna trvalá připojení se přesměrují do služby SignalR. V důsledku toho aplikační server potřebuje zpracovat obchodní logiku pouze ve třídě centra, aniž by se museli starat o připojení klientů.
Další kroky
Další informace o sadách SDK služby Azure SignalR najdete tady: