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.
A SignalR-eseményindító kötésével válaszolhat az Azure SignalR Service-ből küldött üzenetekre. A függvény aktiválásakor a függvénynek átadott üzenetek json-objektumként lesznek elemezve.
A SignalR Szolgáltatás kiszolgáló nélküli módban a SignalR Szolgáltatás az Upstream funkcióval küld üzeneteket az ügyfélről a függvényalkalmazásba. A függvényalkalmazás pedig SignalR Service-eseményindító kötést használ az üzenetek kezeléséhez. Az általános architektúra az alábbiakban látható:
A beállítással és a konfigurációval kapcsolatos információkért tekintse meg az áttekintést.
Példa
C# függvényt az alábbi C# módok egyikével hozhat létre:
- Izolált feldolgozómodell: Lefordított C# függvény, amely a futtatókörnyezettől elkülönített feldolgozói folyamatban fut. Izolált feldolgozói folyamat szükséges a hosszú távú támogatáson (LTS) futó C# függvények támogatásához, valamint a .NET és a .NET-keretrendszer nem LTS-verzióihoz.
- Folyamatban lévő modell: Lefordított C# függvény, amely ugyanabban a folyamatban fut, mint az Azure Functions futtatókörnyezete.
- C#-szkript: Elsősorban C#-függvények Azure Portalon való létrehozásakor használatos.
Fontos
A folyamaton belüli modell támogatása 2026. november 10-én megszűnik. Erősen javasoljuk, hogy az alkalmazásokat az elkülönített feldolgozói modellbe migrálja a teljes támogatás érdekében.
Az alábbi minta egy C# függvényt mutat be, amely üzeneteseményt fogad az ügyfelektől, és naplózza az üzenet tartalmát.
[Function(nameof(OnClientMessage))]
public static void OnClientMessage(
[SignalRTrigger("Hub", "messages", "sendMessage", "content", ConnectionStringSetting = "SignalRConnection")]
SignalRInvocationContext invocationContext, string content, FunctionContext functionContext)
{
var logger = functionContext.GetLogger(nameof(OnClientMessage));
logger.LogInformation("Connection {connectionId} sent a message. Message content: {content}", invocationContext.ConnectionId, content);
}
Fontos
A SignalR szolgáltatás kötéseinek osztályalapú modellje a C# izolált feldolgozóban nem optimalizálja a SignalR-eseményindítók írási módját a C# feldolgozómodell korlátozása miatt. Az osztályalapú modellről további információt az Osztályalapú modell című témakörben talál.
A SignalR-eseményindító jelenleg nem támogatott a Java esetében.
Az alábbi kötési adatok a function.json fájlban:
{
"type": "signalRTrigger",
"name": "invocation",
"hubName": "hubName1",
"category": "messages",
"event": "SendMessage",
"parameterNames": [
"message"
],
"direction": "in"
}
app.generic("function1",
{
trigger: { "type": "signalRTrigger", "name": "invocation", "direction": "in", "hubName": "hubName1", "event": "SendMessage", "category": "messages" },
handler: (triggerInput, context) => {
context.log(`Receive ${triggerInput.Arguments[0]} from ${triggerInput.ConnectionId}.`)
}
})
A Teljes PowerShell-példák függőben vannak.
A Python-kód a következő:
import logging
import json
import azure.functions as func
def main(invocation) -> None:
invocation_json = json.loads(invocation)
logging.info("Receive {0} from {1}".format(invocation_json['Arguments'][0], invocation_json['ConnectionId']))
Attribútumok
A függvény definiálásához a folyamaton belüli és az izolált feldolgozói folyamat C# kódtárai is A C#-szkript ehelyett function.json konfigurációs fájlt használ.
Az alábbi táblázat az attribútum tulajdonságait SignalRTrigger ismerteti.
| Attribútumtulajdonság | Leírás |
|---|---|
| HubName | Ezt az értéket a SignalR hub nevére kell állítani a aktiválandó függvényhez. |
| Kategória | Ezt az értéket a aktiválni kívánt függvény üzenetkategóriájaként kell beállítani. A kategória a következő értékek egyike lehet:
|
| Esemény | Ezt az értéket a aktiválni kívánt függvény üzeneteinek eseményeként kell beállítani. Az üzenetek kategóriája esetén az esemény az ügyfelek által küldött meghívási üzenet célja. A kapcsolatok kategóriához csak a csatlakoztatott és a leválasztott kapcsolat használható. |
| ParameterNames | (Nem kötelező) A paraméterekhez kötődő nevek listája. |
| ConnectionStringSetting | Annak az alkalmazásbeállításnak vagy beállításgyűjteménynek a neve, amely tartalmazza a SignalR-szolgáltatást kapcsolati sztring, amely alapértelmezés szerint a következőAzureSignalRConnectionString. |
Jegyzetek
A SignalR-eseményindítókhoz jelenleg nincs támogatott Java-széljegyzet.
Konfiguráció
Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.
| function.json tulajdonság | Leírás |
|---|---|
| típus | A beállításnak a SignalRTriggerkövetkezőnek kell lennie: . |
| irány | A beállításnak a inkövetkezőnek kell lennie: . |
| név | A függvénykódban a triggerhívás környezeti objektumához használt változónév. |
| hubName | Ezt az értéket a SignalR hub nevére kell állítani a aktiválandó függvényhez. |
| kategória | Ezt az értéket a aktiválni kívánt függvény üzenetkategóriájaként kell beállítani. A kategória a következő értékek egyike lehet:
|
| esemény | Ezt az értéket a aktiválni kívánt függvény üzeneteinek eseményeként kell beállítani. Az üzenetek kategóriája esetén az esemény az ügyfelek által küldött meghívási üzenet célja. A kapcsolatok kategóriához csak a csatlakoztatott és a leválasztott kapcsolat használható. |
| parameterNames | (Nem kötelező) A paraméterekhez kötődő nevek listája. |
| connectionStringSetting | Annak az alkalmazásbeállításnak vagy beállításgyűjteménynek a neve, amely tartalmazza a SignalR-szolgáltatást kapcsolati sztring, amely alapértelmezés szerint a következőAzureSignalRConnectionString. |
A teljes példákért tekintse meg a Példa szakaszt .
Használat
Felügyelt identitásalapú kapcsolatok
Az optimális biztonság érdekében a függvényalkalmazásnak felügyelt identitásokat kell használnia, amikor egy megosztott titkos kulcsot tartalmazó kapcsolati sztring helyett csatlakozik az Azure SignalR szolgáltatáshoz. További információ: Kérelmek engedélyezése az Azure SignalR Service-erőforrásokhoz a Microsoft Entra által felügyelt identitásokkal.
Hasznos adatok
Az eseményindító bemeneti típusa vagy egyéni típusként InvocationContext van deklarálva. Ha úgy dönt InvocationContext, teljes hozzáférést kap a kérés tartalmához. Egyéni típus esetén a futtatókörnyezet megpróbálja elemezni a JSON-kérelem törzsét az objektumtulajdonságok beállításához.
InvocationContext
InvocationContext a SignalR szolgáltatásból küldött üzenet összes tartalmát tartalmazza, amely a következő tulajdonságokat tartalmazza:
Az ParameterNames használata
A tulajdonság ParameterNames lehetővé SignalRTrigger teszi, hogy a meghívási üzenetek argumentumait a függvények paramétereihez kösse. Használhatja a kötési kifejezések részeként definiált nevet más kötésekben vagy paraméterekként a kódban. Így kényelmesebben érheti el az argumentumokat InvocationContext.
Tegyük fel, hogy egy JavaScript SignalR-ügyfél két argumentummal broadcastmessage1próbál metódust meghívni message2 az Azure-függvényben.
await connection.invoke("broadcast", message1, message2);
A beállítás parameterNamesután a megadott nevek megfelelnek az ügyféloldalon küldött argumentumoknak.
[SignalRTrigger(parameterNames: new string[] {"arg1, arg2"})]
Ezután a arg1 fájl tartalma message1arg2 és tartalmamessage2.
ParameterNames Megfontolások
A paraméterkötésnél a sorrend számít. Ha használja ParameterNames, a sorrend ParameterNames megegyezik az ügyfélben meghívott argumentumok sorrendjével. Ha C#-ban használ attribútumot [SignalRParameter] , az Azure-függvény metódusaiban az argumentumok sorrendje megegyezik az ügyfelek argumentumainak sorrendjével.
ParameterNames és az attribútum [SignalRParameter]nem használható egyszerre, vagy kivételt fog kapni.
SignalR-szolgáltatás integrációja
A SignalR szolgáltatásnak url-címre van szüksége a függvényalkalmazás eléréséhez a SignalR Service eseményindító kötésének használatakor. Az URL-címet a SignalR szolgáltatás oldalán a felsőbb réteg beállításai között kell konfigurálni.
A SignalR szolgáltatás eseményindítójának használata esetén az URL-cím az alábbiak szerint lehet egyszerű és formázható:
<Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
Ez Function_App_URL a függvényalkalmazás áttekintési oldalán található, és az API_KEY Azure-függvény hozza létre. A függvényalkalmazás AlkalmazásbillentyűkAPI_KEYsignalr_extension meg a lehetőséget.
Ha egynél több függvényalkalmazást szeretne használni egy SignalR-szolgáltatással együtt, a felsőbb réteg is támogathatja az összetett útválasztási szabályokat. További részletekért tekintse meg a felsőbb réteg beállításait.
Részletes minta
A GitHubon található mintát követve üzembe helyezhet egy csevegőszobát a Függvényalkalmazásban a SignalR Service triggerkötési és felsőbb rétegbeli funkciójával: Kétirányú csevegőszoba-minta