Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a lépésenkénti oktatóanyagban egy csevegőszobát hoz létre hitelesítéssel és privát üzenetküldéssel az alábbi technológiák használatával:
- Azure Functions: Háttér API a felhasználók hitelesítéséhez és csevegőüzenetek küldéséhez.
- Azure SignalR Service: Szolgáltatás új üzenetek csatlakoztatott csevegő ügyfeleknek való közvetítéséhez.
- Azure Storage: Az Azure Functions által igényelt tárolási szolgáltatás.
- Azure-alkalmazás Szolgáltatás: Felhasználóhitelesítést biztosító szolgáltatás.
Fontos
A cikkben szereplő nyers kapcsolati sztring csak bemutató célokra jelennek meg.
A kapcsolati sztring tartalmazzák azokat az engedélyezési információkat, amelyekre az alkalmazásnak szüksége van az Azure SignalR Szolgáltatás eléréséhez. A kapcsolati sztring belüli hozzáférési kulcs hasonló a szolgáltatás gyökérjelszójához. Éles környezetben mindig védje a hozzáférési kulcsokat. Az Azure Key Vault használatával biztonságosan kezelheti és elforgathatja a kulcsokat, és biztonságossá teheti a kapcsolati sztring a Microsoft Entra-azonosítóval, és engedélyezheti a hozzáférést a Microsoft Entra-azonosítóval.
Kerülje a hozzáférési kulcsok más felhasználók számára való terjesztését, a szigorú kódolást, illetve a mások számára hozzáférhető egyszerű szövegek mentését. Ha úgy véli, hogy illetéktelenek lettek, forgassa el a kulcsokat.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Ha még nem rendelkezik fiókkal, ingyen létrehozhat egyet.
- Node.js (20.x-es verzió).
- Azure Functions Core Tools (4-es verzió).
Problémákat tapasztal? Tudassa velünk.
Alapvető erőforrások létrehozása az Azure-ban
Azure SignalR service-erőforrás létrehozása
Az alkalmazás hozzáfér egy Azure SignalR-szolgáltatáspéldányhoz. Azure SignalR-szolgáltatáspéldány létrehozásához kövesse az alábbi lépéseket az Azure Portal használatával:
Az Azure Portalon válassza az Erőforrás létrehozása (+) gombot.
Keresse meg és válassza ki a SignalR Service elemet.
Válassza a Létrehozás lehetőséget.
Adja meg a következő információkat.
Név szerint Érték Erőforráscsoport Hozzon létre egy új erőforráscsoportot egyedi névvel. Erőforrás neve Adjon meg egy egyedi nevet az Azure SignalR Service-példánynak. Régió Válasszon ki egy Önhöz közeli régiót. Tarifacsomag Válassza az Ingyenes lehetőséget. Szolgáltatás mód Válassza a Kiszolgáló nélküli lehetőséget. Válassza a Felülvizsgálat és létrehozás lehetőséget.
Válassza a Létrehozás lehetőséget.
Problémákat tapasztal? Tudassa velünk.
Azure-függvényalkalmazás és Azure Storage-fiók létrehozása
Az Azure Portal kezdőlapján válassza az Erőforrás létrehozása (+) lehetőséget.
Keresse meg a függvényalkalmazást , és válassza ki.
Válassza a Létrehozás lehetőséget.
Adja meg a következő információkat.
Név szerint Érték Erőforráscsoport Használja ugyanazt az erőforráscsoportot az Azure SignalR Service-példányával. Függvényalkalmazás neve Adja meg a függvényalkalmazás egyedi nevét. Futtatókörnyezeti verem Válassza a Node.js lehetőséget. Régió Válasszon ki egy Önhöz közeli régiót. Alapértelmezés szerint egy új Azure Storage-fiók jön létre ugyanabban az erőforráscsoportban a függvényalkalmazással együtt. Ha egy másik tárfiókot szeretne használni a függvényalkalmazásban, váltson a Hosting lapra egy fiók kiválasztásához.
Válassza a Felülvizsgálat + létrehozás, majd a Létrehozás lehetőséget.
Azure Functions-projekt helyi létrehozása
Függvényalkalmazás inicializálása
Parancssorból hozzon létre egy gyökérmappát a projekthez, és váltson a mappára.
Futtassa az alábbi parancsot a terminálban egy új JavaScript Functions-projekt létrehozásához:
A létrehozott projekt alapértelmezés szerint tartalmaz egy host.json fájlt, amely tartalmazza a SignalR-bővítményt tartalmazó bővítménycsomagokat. További információ: Azure Functions-bővítménykötegek.
Alkalmazásbeállítások konfigurálása
Az Azure Functions-futtatókörnyezet helyi futtatásakor és hibakeresésekor a függvényalkalmazás beolvassa az alkalmazásbeállításokat local.settings.json. Frissítse ezt a fájlt az Azure SignalR szolgáltatáspéldány kapcsolati sztring és a korábban létrehozott tárfiókkal.
A cikkben szereplő nyers kapcsolati sztring csak bemutató célokra jelennek meg. Éles környezetben mindig védje a hozzáférési kulcsokat. Az Azure Key Vault használatával biztonságosan kezelheti és elforgathatja a kulcsokat, és biztonságossá teheti a kapcsolati sztring a Microsoft Entra-azonosítóval, és engedélyezheti a hozzáférést a Microsoft Entra-azonosítóval.
Cserélje le a local.settings.json tartalmát a következő kódra:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsStorage": "<your-storage-account-connection-string>",
"AzureSignalRConnectionString": "<your-Azure-SignalR-connection-string>"
}
}
A fenti kód a következőket végzi el:
Adja meg az Azure SignalR szolgáltatás kapcsolati sztring a
AzureSignalRConnectionStringbeállításba.A sztring lekéréséhez nyissa meg az Azure SignalR Service-példányt az Azure Portalon. A Beállítások szakaszban keresse meg a Kulcsok beállítást. A vágólapra való másoláshoz kattintson a kapcsolati sztring jobb oldalán található Másolás gombra. Használhatja az elsődleges vagy a másodlagos kapcsolati sztring.
Adja meg a kapcsolati sztring tárfiókot a
AzureWebJobsStoragebeállításba.A sztring lekéréséhez nyissa meg a tárfiókot az Azure Portalon. A Biztonság + hálózatkezelés szakaszban keresse meg az Access-kulcsok beállítását. A vágólapra való másoláshoz kattintson a kapcsolati sztring jobb oldalán található Másolás gombra. Használhatja az elsődleges vagy a másodlagos kapcsolati sztring.
Problémákat tapasztal? Tudassa velünk.
Függvény létrehozása a felhasználók Azure SignalR Szolgáltatásban való hitelesítéséhez
Amikor a csevegőalkalmazás először nyílik meg a böngészőben, szüksége lesz a kapcsolat hitelesítő adataira ahhoz, hogy kapcsolódhasson az Azure SignalR Service-hez. Hozzon létre egy HTTP-eseményindító függvényt negotiate a függvényalkalmazásban a kapcsolati adatok visszaadásához.
Feljegyzés
Ezt a függvényt el kell nevezni negotiate , mert a SignalR-ügyfélnek szüksége van egy végpontra, amely a következő végződésű /negotiate: .
A gyökérprojekt mappából hozza létre a
negotiatefüggvényt egy beépített sablonból az alábbi paranccsal:func new --template "HTTP trigger" --name negotiateNyissa meg az src/functions/negotiate.js, frissítse a tartalmat az alábbiak szerint:
const { app, input } = require('@azure/functions'); const inputSignalR = input.generic({ type: 'signalRConnectionInfo', name: 'connectionInfo', hubName: 'default', connectionStringSetting: 'AzureSignalRConnectionString', }); app.post('negotiate', { authLevel: 'anonymous', handler: (request, context) => { return { body: JSON.stringify(context.extraInputs.get(inputSignalR)) } }, route: 'negotiate', extraInputs: [inputSignalR], });A függvény egy HTTP-eseményindító-kötést tartalmaz a SignalR-ügyfelektől érkező kérések fogadásához. A függvény egy SignalR bemeneti kötést is tartalmaz, amely érvényes hitelesítő adatokat hoz létre egy ügyfél számára egy Azure SignalR Service Hubhoz való
defaultcsatlakozáshoz.Ez a függvény felveszi a SignalR kapcsolati adatait a bemeneti kötésből, és visszaadja azokat az ügyfélnek a HTTP-válasz törzsében.
A helyi fejlesztéshez nincs
userIdtulajdonság asignalRConnectionInfokötésben. Később hozzáadja, hogy beállítsa a SignalR-kapcsolat felhasználónevét, amikor üzembe helyezi a függvényalkalmazást az Azure-ban.
Problémákat tapasztal? Tudassa velünk.
Függvény létrehozása csevegőüzenetek küldéséhez
A webalkalmazásnak egy HTTP API-ra is szüksége lesz, hogy csevegőüzeneteket tudjon küldeni. Hozzon létre egy HTTP-triggerfüggvényt, amely üzeneteket küld az Azure SignalR szolgáltatást használó összes csatlakoztatott ügyfélnek:
A gyökérprojekt mappájából hozzon létre egy HTTP-eseményindító függvényt
sendMessagea sablonból a következő paranccsal:func new --name sendMessage --template "Http trigger"Nyissa meg az src/functions/sendMessage.js fájlt, frissítse a tartalmat az alábbiak szerint:
const { app, output } = require('@azure/functions'); const signalR = output.generic({ type: 'signalR', name: 'signalR', hubName: 'default', connectionStringSetting: 'AzureSignalRConnectionString', }); app.http('messages', { methods: ['POST'], authLevel: 'anonymous', extraOutputs: [signalR], handler: async (request, context) => { const message = await request.json(); message.sender = request.headers && request.headers.get('x-ms-client-principal-name') || ''; let recipientUserId = ''; if (message.recipient) { recipientUserId = message.recipient; message.isPrivate = true; } context.extraOutputs.set(signalR, { 'userId': recipientUserId, 'target': 'newMessage', 'arguments': [message] }); } });A függvény egy HTTP-eseményindítót és egy SignalR kimeneti kötést tartalmaz. Felveszi a törzset a HTTP-kérelemből, és elküldi az Azure SignalR Szolgáltatáshoz csatlakozó ügyfeleknek. Meghívja az egyes ügyfeleken elnevezett
newMessagefüggvényt.A függvény beolvassa a feladó identitását, és elfogadhat egy
recipientértéket az üzenet törzsében, amely lehetővé teszi, hogy privát módon küldjön üzenetet egyetlen felhasználónak. Ezeket a funkciókat az oktatóanyag későbbi részében fogja használni.Mentse a fájlt.
Problémákat tapasztal? Tudassa velünk.
A csevegőügyfél webes felhasználói felületének üzemeltetése
A csevegőalkalmazás felhasználói felülete egy egyszerű, egyoldalas alkalmazás (SPA), amelyet a Vue JavaScript-keretrendszerrel hoztak létre a ASP.NET Core SignalR JavaScript-ügyfél használatával. Az egyszerűség kedvéért a függvényalkalmazás üzemelteti a weblapot. Éles környezetben a Static Web Apps használatával üzemeltetheti a weblapot.
Hozzon létre egy index.html nevű fájlt a függvényprojekt gyökérkönyvtárában.
Másolja és illessze be a index.html tartalmát a fájlba. Mentse a fájlt.
A gyökérprojekt mappájából hozzon létre egy HTTP-eseményindító függvényt
indexa sablonból az alábbi paranccsal:func new --name index --template "Http trigger"Módosítsa az src/functions/index.js tartalmát a következő kódra:
const { app } = require('@azure/functions'); const { readFile } = require('fs/promises'); app.http('index', { methods: ['GET'], authLevel: 'anonymous', handler: async (context) => { const content = await readFile('index.html', 'utf8', (err, data) => { if (err) { context.err(err) return } }); return { status: 200, headers: { 'Content-Type': 'text/html' }, body: content, }; } });A függvény beolvassa a statikus weblapot, és visszaadja a felhasználónak.
Tesztelje az alkalmazást helyileg. Indítsa el a függvényalkalmazást a következő paranccsal:
func startNyissa meg
http://localhost:7071/api/indexa webböngészőben. Meg kell jelennie egy csevegőoldalnak.
Írjon be egy üzenetet a csevegőablakba.
Az Enter billentyű kiválasztása után az üzenet megjelenik a weblapon. Mivel a SignalR-ügyfél felhasználóneve nincs beállítva, az összes üzenetet névtelenül küldi el.
Problémákat tapasztal? Tudassa velünk.
Üzembe helyezés az Azure-ban és a hitelesítés engedélyezése
A függvényalkalmazást és a csevegőalkalmazást helyileg futtatta. Most helyezze üzembe őket az Azure-ban, és engedélyezze a hitelesítést és a privát üzenetküldést.
A függvényalkalmazás konfigurálása hitelesítéshez
Eddig a csevegőalkalmazás névtelenül működött. Az Azure-ban App Service-hitelesítést fog használni a felhasználó hitelesítéséhez. A hitelesített felhasználó felhasználói azonosítóját vagy felhasználónevét a rendszer átadja a kötésnek a SignalRConnectionInfo felhasználóként hitelesített kapcsolati adatok létrehozásához.
Nyissa meg az src/functions/negotiate.js fájlt.
userIdTulajdonság beszúrása ainputSignalRkötésbe az értékkel{headers.x-ms-client-principal-name}. Ez az érték egy kötési kifejezés , amely a SignalR-ügyfél felhasználónevét a hitelesített felhasználó nevére állítja. A kötésnek most az alábbi példához hasonlóan kell kinéznie:const inputSignalR = input.generic({ type: 'signalRConnectionInfo', name: 'connectionInfo', hubName: 'default', connectionStringSetting: 'AzureSignalRConnectionString', userId: '{headers.x-ms-client-principal-name}' });Mentse a fájlt.
A függvényalkalmazás üzembe helyezése az Azure-ban
A függvényalkalmazás üzembe helyezése az Azure-ban a következő paranccsal:
func azure functionapp publish <your-function-app-name> --publish-local-settings
A --publish-local-settings beállítás közzéteszi a helyi beállításokat a local.settings.json fájlból az Azure-ba, így nem kell újra konfigurálnia őket az Azure-ban.
Az App Service-hitelesítés engedélyezése
Az Azure Functions a Microsoft Entra ID, a Facebook, az X, a Microsoft-fiók és a Google használatával támogatja a hitelesítést. Ebben az oktatóanyagban a Microsoftot fogja használni identitásszolgáltatóként.
Az Azure Portalon nyissa meg a függvényalkalmazás erőforrásoldalát.
Válassza a Beállítások hitelesítése lehetőséget>.
Válassza az Identitásszolgáltató hozzáadása lehetőséget.
Az Identitásszolgáltató listában válassza a Microsoftot. Ezután válassza a Hozzáadás elemet.
A kész beállítások létrehoznak egy alkalmazásregisztrációt, amely társítja az identitásszolgáltatót a függvényalkalmazáshoz.
A támogatott identitásszolgáltatókkal kapcsolatos további információkért tekintse meg a következő cikkeket:
Az alkalmazás kipróbálása
- Nyílt
https://<YOUR-FUNCTION-APP-NAME>.azurewebsites.net/api/index. - Válassza a Bejelentkezést, hogy hitelesíthesse magát a kiválasztott hitelesítési szolgáltatóval.
- Nyilvános üzenetek küldése a fő csevegőablakban való megadásával.
- Privát üzenetek küldése egy felhasználónév kiválasztásával a csevegési előzményekben. Ezeket az üzeneteket csak a kijelölt címzett kapja meg.
Gratulálunk! Egy valós idejű, kiszolgáló nélküli csevegőalkalmazást helyezett üzembe.
Problémákat tapasztal? Tudassa velünk.
Az erőforrások eltávolítása
Az oktatóanyagban létrehozott erőforrások törléséhez törölje az erőforráscsoportot az Azure Portal használatával.
Figyelemfelhívás
Az erőforráscsoport törlése törli az összes benne lévő erőforrást. Ha az erőforráscsoport az oktatóanyag hatókörén kívül eső erőforrásokat is tartalmaz, azok is törlődnek.
Problémákat tapasztal? Tudassa velünk.
Következő lépések
Ebből az oktatóanyagból elsajátította, hogyan használható az Azure Functions az Azure SignalR Service szolgáltatással. További információ a valós idejű kiszolgáló nélküli alkalmazások Azure SignalR Service-kötésekkel történő készítéséről az Azure Functionshez: