Azure SignalR Service – internt
Azure SignalR Service är byggt på ASP.NET Core SignalR-ramverket. Det stöder också ASP.NET SignalR genom att omimplementera ASP.NET SignalR:s dataprotokoll ovanpå ASP.NET Core-ramverket.
Du kan enkelt migrera en lokal ASP.NET Core SignalR eller ett ASP.NET SignalR-program för att arbeta med SignalR Service, med genom att ändra några rader kod.
Diagrammet beskriver den typiska arkitekturen när du använder SignalR Service med programservern.
Skillnaderna mot det lokala ASP.NET Core SignalR-programmet diskuteras också.
Programserveranslutningar
En lokalt installerad ASP.NET Core SignalR-programserver lyssnar på och ansluter klienter direkt.
Med SignalR Service accepterar programservern inte längre beständiga klientanslutningar i stället:
- En
negotiate
-slutpunkt exponeras av Azure SignalR Service SDK för varje hubb. - Slutpunkten svarar på klientförhandlingsbegäranden och omdirigerar klienter till SignalR Service.
- Klienterna ansluter till SignalR Service.
Mer information finns i Klientanslutningar.
När programservern har startats:
- För ASP.NET Core SignalR: Azure SignalR Service SDK öppnar fem WebSocket-anslutningar per hubb till SignalR Service.
- För ASP.NET SignalR: Azure SignalR Service SDK öppnar fem WebSocket-anslutningar per hubb till SignalR Service och en webSocket-anslutning per program.
Det inledande antalet anslutningar är som standard 5 och kan konfigureras med hjälp av InitialHubServerConnectionCount
alternativet i SignalR Service SDK. Mer information finns i konfigurationen.
Medan programservern är ansluten till SignalR-tjänsten skickar Azure SignalR-tjänsten belastningsutjämningsmeddelanden till servern. Sedan startar SDK:n nya serveranslutningar till tjänsten för bättre prestanda. Meddelanden till och från klienter multiplexeras till dessa anslutningar.
Serveranslutningar är beständigt anslutna till SignalR Service. Om en serveranslutning är frånkopplad på grund av ett nätverksproblem:
- Alla klienter som hanteras av den här serveranslutningen kopplas från. Mer information finns i Dataöverföring mellan klient och server.
- Servern återansluter automatiskt klienterna.
Klientanslutningar
När du använder SignalR Service ansluter klienterna till tjänsten i stället för programservern. Det finns tre steg för att upprätta beständiga anslutningar mellan klienten och SignalR Service.
Klienten skickar en förhandlingsbegäran till programservern.
Programservern använder Azure SignalR Service SDK för att returnera ett omdirigeringssvar som innehåller SignalR-tjänstens URL och åtkomsttoken.
- För ASP.NET Core SignalR ser ett typiskt omdirigeringssvar ut så här:
{ "url":"https://test.service.signalr.net/client/?hub=chat&...", "accessToken":"<a typical JWT token>" }
- För ASP.NET SignalR ser ett typiskt omdirigeringssvar ut så här:
{ "ProtocolVersion":"2.0", "RedirectUrl":"https://test.service.signalr.net/aspnetclient", "AccessToken":"<a typical JWT token>" }
- För ASP.NET Core SignalR ser ett typiskt omdirigeringssvar ut så här:
När klienten har fått omdirigeringssvaret använder den URL:en och åtkomsttoken för att ansluta till SignalR Service.
Mer information om ASP.NET Core SignalR finns i TransportProtokoll.
Dataöverföring mellan klient och server
När en klient är ansluten till SignalR Service hittar tjänstkörningen en serveranslutning för att hantera den här klienten.
- Det här steget sker bara en gång och är en en-till-en-mappning mellan klienten och serveranslutningen.
- Mappningen underhålls i SignalR Service tills klienten eller servern kopplas från.
Programservern får då en händelse med information från den nya klienten. En logisk anslutning till klienten skapas i programservern. Datakanalen upprättas från klienten till programservern via SignalR Service.
SignalR Service överför data från klienten till programservern för parkoppling. Data från programservern skickas till de mappade klienterna.
SignalR Service sparar eller lagrar inte kunddata. Alla mottagna kunddata överförs till målservern eller klienterna i realtid.
Azure SignalR Service fungerar som ett logiskt transportlager mellan programservern och klienterna. Alla beständiga anslutningar avlastas till SignalR Service. Därför behöver programservern bara hantera affärslogik i hubbklassen, utan att behöva oroa sig för klientanslutningar.
Nästa steg
Mer information om Azure SignalR SDK:er finns i: