Az Azure SignalR szolgáltatás használata
Ez a cikk bemutatja, hogyan használhatja az SDK-t az alkalmazáskiszolgáló oldalán a SignalR Szolgáltatáshoz való csatlakozáshoz, amikor a SignalR-t használja az alkalmazáskiszolgálón.
Azure SignalR Service-példány létrehozása
Kövesse a rövid útmutatót: Arm-sablon használata az Azure SignalR üzembe helyezéséhez SignalR-szolgáltatáspéldány létrehozásához.
ASP.NET Core SignalR esetén
Telepítse a SDK-t
Futtassa a parancsot a SignalR Service SDK telepítéséhez a ASP.NET Core-projekthez.
dotnet add package Microsoft.Azure.SignalR
Az osztályban használja a Startup
SignalR Service SDK-t a következő kódrészletként.
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR()
.AddAzureSignalR();
}
public void Configure(IApplicationBuilder app)
{
app.UseEndpoints(routes =>
{
routes.MapHub<YourHubClass>("/path_for_your_hub");
});
}
Kapcsolati sztring konfigurálása
A SignalR Service kapcsolati sztring kétféleképpen konfigurálható az alkalmazásban.
Állítson be egy környezeti változót névvel
Azure:SignalR:ConnectionString
vagyAzure__SignalR__ConnectionString
.- A Azure-alkalmazás Szolgáltatásban helyezze az alkalmazásbeállításokba.
Adja meg a kapcsolati sztring paraméterként.
AddAzureSignalR()
services.AddSignalR() .AddAzureSignalR("<replace with your connection string>");
vagy
services.AddSignalR() .AddAzureSignalR(options => options.ConnectionString = "<replace with your connection string>");
Beállítások konfigurálása
Az Azure SignalR Service SDK használatakor testre szabhat néhány beállítást .
ConnectionString
- Az alapértelmezett érték a fájl vagy fájl
Azure:SignalR:ConnectionString
connectionString
appSetting
.web.config
- Újrakonfigurálható, de győződjön meg arról, hogy az érték NEM szigorúan kódolt.
InitialHubServerConnectionCount
- Az alapértelmezett érték
5
. - Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonkénti kapcsolatok kezdeti számát. Általában tartsa meg, mivel az alapértelmezett érték elegendő. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Ha nagy számú ügyféllel rendelkezik, nagyobb számot adhat neki a jobb átviteli sebesség érdekében. Ha például összesen 100 000 ügyféllel rendelkezik, a kapcsolat száma növelhető vagy
15
növelhető10
.
MaxHubServerConnectionCount
- Az alapértelmezett érték
null
. - Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonként engedélyezett kapcsolatok maximális számát. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Alapértelmezés szerint szükség esetén új kiszolgálókapcsolat indul el. Ha a maximálisan engedélyezett kiszolgálói kapcsolatszám konfigurálva van, az SDK nem indít el új kapcsolatokat, amikor a kiszolgálókapcsolatok száma eléri a korlátot.
ApplicationName
- Az alapértelmezett érték
null
. - Ez a beállítás akkor lehet hasznos, ha ugyanazt az Azure SignalR-példányt szeretné megosztani az azonos központneveket tartalmazó különböző alkalmazáskiszolgálókon. Ha nincs beállítva, a rendszer az összes csatlakoztatott alkalmazáskiszolgálót ugyanahhoz az alkalmazáshoz tartozó példánynak tekinti.
ClaimsProvider
- Az alapértelmezett érték
null
. - Ez a beállítás szabályozza, hogy milyen jogcímeket szeretne társítani az ügyfélkapcsolattal.
Akkor használatos, amikor a Service SDK hozzáférési jogkivonatot hoz létre az ügyfél számára az ügyfél egyeztetési kérésében.
Alapértelmezés szerint a tárgyalásos kérelem összes jogcíme
HttpContext.User
fenntartott. Ezek a címen érhetők elHub.Context.User
. - Ezt a beállítást általában a megszokott módon kell hagynia. A testreszabás előtt győződjön meg arról, hogy tisztában van azzal, mi történik.
AccessTokenLifetime
- Az alapértelmezett érték
1 hour
. - Ez a beállítás a Service SDK által az egyes ügyfelek számára létrehozott hozzáférési jogkivonat érvényes élettartamát szabályozza. A hozzáférési jogkivonat az ügyfél egyeztetési kérésére adott válaszban lesz visszaadva.
- Amikor
ServerSentEvent
az ügyfélkapcsolatot átvitelként használják vagyLongPolling
használják, az ügyfélkapcsolat a lejárt idő után a hitelesítési hiba miatt le lesz zárva. Ezt az értéket növelheti, hogy elkerülje az ügyfél kapcsolatának megszakadását.
AccessTokenAlgorithm
- Az alapértelmezett érték a
HS256
- Ez a beállítás választási lehetőséget biztosít a
SecurityAlgorithms
hozzáférési jogkivonatok létrehozásakor. Most már támogatott választható értékek ésHS256
HS512
. Vegye figyelembe, hogyHS512
biztonságosabb, de a létrehozott jogkivonat viszonylag hosszabb, mint a használtHS256
.
ServerStickyMode
- Az alapértelmezett érték
Disabled
. - Ez a beállítás a kiszolgáló ragadós módját adja meg. Amikor az ügyfél átirányítva van ahhoz a kiszolgálóhoz, amellyel először egyeztet, a kiszolgálót ragadósnak nevezzük.
- Elosztott forgatókönyvekben több alkalmazáskiszolgáló is csatlakoztatható egy Azure SignalR-példányhoz. Az ügyfélkapcsolatok belső magyarázata szerint az ügyfél először egyeztet az alkalmazáskiszolgálóval, majd átirányítja az Azure SignalR-be az állandó kapcsolat létrehozásához. Az Azure SignalR ezután megkeres egy alkalmazáskiszolgálót, amely kiszolgálja az ügyfelet, amint azt az ügyfél és a kiszolgáló közötti adatátvitel ismerteti.
- Amikor
Disabled
az ügyfél átirányít egy véletlenszerű alkalmazáskiszolgálóra. Az alkalmazáskiszolgálók általában kiegyensúlyozott ügyfélkapcsolatokkal rendelkeznek ezzel a móddal. Ha a forgatókönyvek közvetítésre vagy csoportos küldésre kerülnek, használja ezt az alapértelmezett beállítást. - Amikor
Preferred
az Azure SignalR megkísérli megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először tárgyal úgy, hogy nincs szükség más költségekre vagy globális útválasztásra. Ez akkor lehet hasznos, ha a forgatókönyvet elküldi a kapcsolatnak*. A küldés a kapcsolatra jobb teljesítménnyel és kisebb késéssel járhat, ha a feladó és a fogadó ugyanahhoz az alkalmazáskiszolgálóhoz van irányítva. - Amikor
Required
az Azure SignalR mindig megpróbálja megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először egyeztet. Ez a beállítás akkor lehet hasznos, ha egy ügyfélkörnyezetet lekérnek a lépésbőlnegotiate
, és memóriában tárolják, majd az s-benHub
használják. Ennek a lehetőségnek azonban lehetnek teljesítménybeli hátrányai, mivel az Azure SignalR-nek más erőfeszítéseket kell tennie az adott alkalmazáskiszolgáló globális megkeresésére, valamint az ügyfél és a kiszolgáló közötti forgalom globális útválasztására.
- Amikor
GracefulShutdown
GracefulShutdown.Mode
- Az alapértelmezett érték a
Off
- Ez a beállítás azt a viselkedést adja meg, amikor az alkalmazáskiszolgáló SIGINT-et (CTRL + C) kap.
- Ha a
WaitForClientsClose
kiszolgáló azonnali leállítása helyett az Azure SignalR szolgáltatásból eltávolítjuk, azzal megakadályozzuk, hogy új ügyfélkapcsolatok legyenek hozzárendelve ehhez a kiszolgálóhoz. - Ha be van
MigrateClients
állítva, megpróbáljuk áttelepíteni az ügyfélkapcsolatokat egy másik érvényes kiszolgálóra. A migrálás csak egy üzenet kézbesítése után aktiválódik.
GracefulShutdown.Timeout
- Az alapértelmezett érték a
30 seconds
- Ez a beállítás az ügyfelek bezárására/migrálására való várakozás leghosszabb idejét adja meg.
ServiceScaleTimeout
- Az alapértelmezett érték a
5 minutes
- Ez a beállítás megadja a dinamikus skálázási szolgáltatásvégpontokra való várakozás leghosszabb idejét, amely legalább az online ügyfeleket érinti. Az egyetlen alkalmazáskiszolgáló és a szolgáltatásvégpont közötti dinamikus skálázás általában másodpercek alatt befejezhető, miközben figyelembe veszi, hogy több alkalmazáskiszolgálóval és több szolgáltatásvégponttal rendelkezik-e hálózati jitterrel, és biztosítani szeretné az ügyfél stabilitását, ennek megfelelően konfigurálhatja ezt az értéket.
MaxPollIntervalInSeconds
- Az alapértelmezett érték a
5
- Ez a beállítás határozza meg az Azure SignalR Service-beli kapcsolatokhoz
LongPolling
engedélyezett maximális lekérdezési időközt. Ha a következő lekérdezési kérelem nem jön beMaxPollIntervalInSeconds
, az Azure SignalR Service törli az ügyfélkapcsolatot. - Az érték csak a következőre korlátozódik
[1, 300]
: .
TransportTypeDetector
- Alapértelmezett érték: Minden átvitel engedélyezve van.
- Ez a beállítás egy függvényt határoz meg, amely testre szabja az ügyfelek által a HTTP-kérések küldéséhez használható átviteleket.
- Az átvitelek konfigurálása helyett
HttpConnectionDispatcherOptions.Transports
használja ezt a beállítást.
Minta
A fenti beállításokat az alábbi mintakódhoz hasonlóan konfigurálhatja.
services.AddSignalR()
.AddAzureSignalR(options =>
{
options.InitialHubServerConnectionCount = 10;
options.AccessTokenLifetime = TimeSpan.FromDays(1);
options.ClaimsProvider = context => context.User.Claims;
options.GracefulShutdown.Mode = GracefulShutdownMode.WaitForClientsClose;
options.GracefulShutdown.Timeout = TimeSpan.FromSeconds(10);
options.TransportTypeDetector = httpContext => AspNetCore.Http.Connections.HttpTransportType.WebSockets | AspNetCore.Http.Connections.HttpTransportType.LongPolling;
});
Az örökölt ASP.NET SignalR esetében
Feljegyzés
Ha először próbálja ki a SignalR-t, javasoljuk, hogy használja a ASP.NET Core SignalR-t, egyszerűbb , megbízhatóbb és könnyebben használható.
Telepítse a SDK-t
Telepítse a SignalR Service SDK-t a ASP.NET-projektbe Csomagkezelő konzollal:
Install-Package Microsoft.Azure.SignalR.AspNet
Az osztályban használja a Startup
SignalR Service SDK-t a következő kódrészletként, és cserélje le MapSignalR()
a következőre MapAzureSignalR({your_applicationName})
. Cserélje le {YourApplicationName}
az alkalmazás nevére, ez az egyedi név, amely megkülönbözteti ezt az alkalmazást a többi alkalmazással. Értékként is használható this.GetType().FullName
.
public void Configuration(IAppBuilder app)
{
app.MapAzureSignalR(this.GetType().FullName);
}
Kapcsolati sztring konfigurálása
Állítsa a kapcsolati sztring a web.config
fájlban a connectionStrings
következő szakaszra:
<configuration>
<connectionStrings>
<add name="Azure:SignalR:ConnectionString" connectionString="Endpoint=...;AccessKey=..."/>
</connectionStrings>
...
</configuration>
Beállítások konfigurálása
Az Azure SignalR Service SDK használatakor testre szabhat néhány beállítást .
ConnectionString
- Az alapértelmezett érték a fájl vagy fájl
Azure:SignalR:ConnectionString
connectionString
appSetting
.web.config
- Újrakonfigurálható, de győződjön meg arról, hogy az érték NEM szigorúan kódolt.
InitialHubServerConnectionCount
- Az alapértelmezett érték
5
. - Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonkénti kapcsolatok kezdeti számát. Általában tartsa meg, mivel az alapértelmezett érték elegendő. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Ha nagy számú ügyféllel rendelkezik, nagyobb számot adhat neki a jobb átviteli sebesség érdekében. Ha például összesen 100 000 ügyféllel rendelkezik, a kapcsolat száma növelhető vagy
15
növelhető10
.
MaxHubServerConnectionCount
- Az alapértelmezett érték
null
. - Ez a beállítás szabályozza az alkalmazáskiszolgáló és az Azure SignalR Szolgáltatás közötti hubonként engedélyezett kapcsolatok maximális számát. Futásidőben előfordulhat, hogy az SDK új kiszolgálókapcsolatokat indít el a teljesítmény finomhangolásához vagy a terheléselosztáshoz. Alapértelmezés szerint szükség esetén új kiszolgálókapcsolat indul el. Ha a maximálisan engedélyezett kiszolgálói kapcsolatszám konfigurálva van, az SDK nem indít el új kapcsolatokat, amikor a kiszolgálókapcsolatok száma eléri a korlátot.
ApplicationName
- Az alapértelmezett érték
null
. - Ez a beállítás akkor lehet hasznos, ha ugyanazt az Azure SignalR-példányt szeretné megosztani az azonos központneveket tartalmazó különböző alkalmazáskiszolgálókon. Ha nincs beállítva, a rendszer az összes csatlakoztatott alkalmazáskiszolgálót ugyanahhoz az alkalmazáshoz tartozó példánynak tekinti.
ClaimProvider
- Az alapértelmezett érték
null
. - Ez a beállítás szabályozza, hogy milyen jogcímeket szeretne társítani az ügyfélkapcsolattal.
Akkor használatos, amikor a Service SDK hozzáférési jogkivonatot hoz létre az ügyfél számára az ügyfél egyeztetési kérésében.
Alapértelmezés szerint a tárgyalásos kérelem összes jogcíme
IOwinContext.Authentication.User
fenntartott. - Ezt a beállítást általában a megszokott módon kell hagynia. A testreszabás előtt győződjön meg arról, hogy tisztában van azzal, mi történik.
AccessTokenLifetime
- Az alapértelmezett érték
1 hour
. - Ez a beállítás szabályozza a hozzáférési jogkivonat érvényes élettartamát, amelyet a Service SDK minden ügyfélhez létrehoz. A hozzáférési jogkivonat az ügyfél egyeztetési kérésére adott válaszban lesz visszaadva.
- Amikor
ServerSentEvent
az ügyfélkapcsolatot átvitelként használják vagyLongPolling
használják, az ügyfélkapcsolat a lejárt idő után a hitelesítési hiba miatt le lesz zárva. Ezt az értéket növelheti, hogy elkerülje az ügyfél kapcsolatának megszakadását.
AccessTokenAlgorithm
- Az alapértelmezett érték a
HS256
- Ez a beállítás választási lehetőséget biztosít a
SecurityAlgorithms
hozzáférési jogkivonatok létrehozásakor. Most már támogatott választható értékek ésHS256
HS512
. Vegye figyelembe, hogyHS512
biztonságosabb, de a létrehozott jogkivonat viszonylag hosszabb, mint a használtHS256
.
ServerStickyMode
- Az alapértelmezett érték
Disabled
. - Ez a beállítás a kiszolgáló ragadós módját adja meg. Amikor az ügyfél átirányítva van ahhoz a kiszolgálóhoz, amellyel először egyeztet, a kiszolgálót ragadósnak nevezzük.
- Elosztott forgatókönyvekben több alkalmazáskiszolgáló is csatlakoztatható egy Azure SignalR-példányhoz. Az ügyfélkapcsolatok belső magyarázata szerint az ügyfél először egyeztet az alkalmazáskiszolgálóval, majd átirányítja az Azure SignalR-be az állandó kapcsolat létrehozásához. Az Azure SignalR ezután megkeres egy alkalmazáskiszolgálót, amely kiszolgálja az ügyfelet, amint azt az ügyfél és a kiszolgáló közötti adatátvitel ismerteti.
- Amikor
Disabled
az ügyfél átirányít egy véletlenszerű alkalmazáskiszolgálóra. Az alkalmazáskiszolgálók általában kiegyensúlyozott ügyfélkapcsolatokkal rendelkeznek ezzel a móddal. Ha a forgatókönyvek közvetítésre vagy csoportos küldésre kerülnek, használja ezt az alapértelmezett beállítást. - Amikor
Preferred
az Azure SignalR megkísérli megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először tárgyal úgy, hogy nincs szükség más költségekre vagy globális útválasztásra. Ez akkor lehet hasznos, ha a forgatókönyvet elküldi a kapcsolatnak*. A küldés a kapcsolatra jobb teljesítménnyel és kisebb késéssel járhat, ha a feladó és a fogadó ugyanahhoz az alkalmazáskiszolgálóhoz van irányítva. - Amikor
Required
az Azure SignalR mindig megpróbálja megtalálni azt az alkalmazáskiszolgálót, amellyel az ügyfél először egyeztet. Ez a beállítás akkor lehet hasznos, ha egy ügyfélkörnyezetet lekérnek a lépésbőlnegotiate
, és memóriában tárolják, majd az s-benHub
használják. Ennek a lehetőségnek azonban lehetnek teljesítménybeli hátrányai, mivel az Azure SignalR-nek más erőfeszítéseket kell tennie az adott alkalmazáskiszolgáló globális megkeresésére, valamint az ügyfél és a kiszolgáló közötti forgalom globális útválasztására.
- Amikor
MaxPollIntervalInSeconds
- Az alapértelmezett érték a
5
- Ez a beállítás határozza meg az Inaktív kapcsolatokhoz engedélyezett maximális üresjárati időt az Azure SignalR Service-ben. A ASP.NET SignalR esetében a hosszú lekérdezési átviteli típusra vagy újracsatlakoztatásra vonatkozik. Ha a következő
/reconnect
vagy/poll
kérés nem jön beMaxPollIntervalInSeconds
, az Azure SignalR Service törli az ügyfélkapcsolatot. - Az érték csak a következőre korlátozódik
[1, 300]
: .
Minta
A fenti beállításokat az alábbi mintakódhoz hasonlóan konfigurálhatja.
app.Map("/signalr",subApp => subApp.RunAzureSignalR(this.GetType().FullName, new HubConfiguration(), options =>
{
options.InitialHubServerConnectionCount = 1;
options.AccessTokenLifetime = TimeSpan.FromDays(1);
options.ClaimProvider = context => context.Authentication?.User.Claims;
}));
Alkalmazáskiszolgáló vertikális felskálázása
Az Azure SignalR Szolgáltatással az állandó kapcsolatok ki vannak töltve az alkalmazáskiszolgálóról, így az üzleti logika központi osztályokban való implementálására összpontosíthat. A nagy méretű ügyfélkapcsolatok kezelésekor azonban továbbra is fel kell méreteznie az alkalmazáskiszolgálókat a jobb teljesítmény érdekében. Az alábbiakban néhány tippet talál az alkalmazáskiszolgálók horizontális felskálázására.
- Több alkalmazáskiszolgáló is csatlakozhat ugyanahhoz az Azure SignalR-szolgáltatáspéldányhoz.
- Ha ugyanazt az Azure SignalR-példányt szeretné megosztani az azonos hubneveket tartalmazó különböző alkalmazásokhoz, állítsa be őket különböző ApplicationName beállítással. Ha nincs beállítva, a rendszer az összes csatlakoztatott alkalmazáskiszolgálót ugyanahhoz az alkalmazáshoz tartozó példánynak tekinti.
- Ha az ApplicationName beállítás és a hubosztály neve megegyezik, a különböző alkalmazáskiszolgálók kapcsolatai ugyanabban a központban vannak csoportosítva.
- Minden ügyfélkapcsolat csak az egyik alkalmazáskiszolgálón jön létre, és az ügyféltől érkező üzenetek csak ugyanarra az alkalmazáskiszolgálóra lesznek elküldve. Ha globálisan (az összes alkalmazáskiszolgálóról) szeretné elérni az ügyféladatokat, az ügyféladatok az összes alkalmazáskiszolgálóról való mentéséhez központi tárolót kell használnia.
Következő lépések
Ebből a cikkből megtudhatja, hogyan használhatja a SignalR szolgáltatást az alkalmazásokban. A SignalR szolgáltatással kapcsolatos további információkért tekintse meg az alábbi cikkeket.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: