Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd SignalR-utlösarbindningen för att svara på meddelanden som skickas från Azure SignalR Service. När funktionen utlöses parsas meddelanden som skickas till funktionen som ett json-objekt.
I serverlöst läge i SignalR Service använder SignalR Service funktionen Upstream för att skicka meddelanden från klienten till funktionsappen. Och Funktionsappen använder SignalR Service-utlösarbindning för att hantera dessa meddelanden. Den allmänna arkitekturen visas nedan:
              
               
              
              
            
Information om konfiguration och konfigurationsinformation finns i översikten.
Exempel
Du kan skapa en C#-funktion med något av följande C#-lägen:
- Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. En isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på långsiktig support (LTS) och icke-LTS-versioner för .NET och .NET Framework.
- Processmodell: Kompilerad C#-funktion som körs i samma process som Azure Functions-körningen.
- C#-skript: Används främst när du skapar C#-funktioner i Azure Portal.
Viktigt!
Supporten upphör för den pågående modellen den 10 november 2026. Vi rekommenderar starkt att du migrerar dina appar till den isolerade arbetsmodellen för fullt stöd.
Följande exempel visar en C#-funktion som tar emot en meddelandehändelse från klienter och loggar meddelandeinnehållet.
[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);
}
Viktigt!
Klassbaserad modell av SignalR Service-bindningar i C#-isolerad arbetare optimerar inte hur du skriver SignalR-utlösare på grund av begränsningen i C#-arbetsmodellen. Mer information om klassbaserad modell finns i Klassbaserad modell.
SignalR-utlösare stöds för närvarande inte för Java.
Här är bindningsdata i filen function.json :
{
    "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}.`)
        }
    })
Slutför PowerShell-exempel väntar.
Här är Python-koden:
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']))
Attribut
C#-bibliotek för både process- och isolerad arbetsprocess använder attributet för att definiera SignalRTrigger funktionen. C#-skriptet använder i stället en function.json konfigurationsfil.
I följande tabell förklaras egenskaperna för attributet SignalRTrigger .
Kommentarer
Det finns för närvarande ingen Java-anteckning som stöds för en SignalR-utlösare.
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .
Se avsnittet Exempel för fullständiga exempel.
Förbrukning
Hanterade identitetsbaserade anslutningar
För optimal säkerhet bör din funktionsapp använda hanterade identiteter när du ansluter till Azure SignalR-tjänsten i stället för att använda en anslutningssträng som innehåller en delad hemlig nyckel. Mer information finns i Auktorisera begäranden till Azure SignalR Service-resurser med Microsoft Entra-hanterade identiteter.
Nyttolaster
Indatatypen för utlösaren deklareras som antingen InvocationContext eller en anpassad typ. Om du väljer InvocationContextfår du fullständig åtkomst till begärandeinnehållet. För en anpassad typ försöker körningen parsa JSON-begärandetexten för att ange objektegenskaperna.
AnropContext
              InvocationContext innehåller allt innehåll i meddelandet som skickas från en SignalR-tjänst, vilket innehåller följande egenskaper:
| Fastighet | beskrivning | 
|---|---|
| Argument | Tillgänglig för meddelandekategori . Innehåller argument i anropsmeddelande | 
| Fel | Tillgänglig för frånkopplad händelse. Den kan vara tom om anslutningen stängdes utan fel eller innehåller felmeddelandena. | 
| Hubb | Hubbens namn som meddelandet tillhör. | 
| Kategori | Kategorin för meddelandet. | 
| Evenemang | Händelsen för meddelandet. | 
| ConnectionId | Anslutnings-ID för klienten som skickar meddelandet. | 
| AnvändarID | Användaridentiteten för klienten som skickar meddelandet. | 
| Sidhuvuden | Sidhuvudena för begäran. | 
| Fråga | Frågan för begäran när klienter ansluter till tjänsten. | 
| Anspråk | Klientens anspråk. | 
Använda ParameterNames
Med egenskapen ParameterNames i SignalRTrigger kan du binda argument för anropsmeddelanden till funktionsparametrarna. Du kan använda det namn som du definierade som en del av bindningsuttryck i andra bindningar eller som parametrar i koden. Det ger dig ett bekvämare sätt att komma åt argument för InvocationContext.
Anta att du har en JavaScript SignalR-klient som försöker anropa metoden broadcast i Azure Function med två argument message1, message2.
await connection.invoke("broadcast", message1, message2);
När du har angett parameterNamesmotsvarar de namn som du har definierat argumenten som skickas på klientsidan.
[SignalRTrigger(parameterNames: new string[] {"arg1, arg2"})]
              arg1 Innehåller sedan innehållet message1i och arg2 innehåller innehållet message2i .
              ParameterNames Överväganden
För parameterbindningen är ordningen viktig. Om du använder ParameterNamesmatchar ordningen i ParameterNames ordningen för argumenten som du anropar i klienten. Om du använder attributet [SignalRParameter] i C# matchar argumentordningen i Azure Function-metoder argumentordningen i klienter.
              ParameterNames och attributet [SignalRParameter]kan inte användas samtidigt, eller så får du ett undantag.
SignalR Service-integrering
SignalR Service behöver en URL för att få åtkomst till funktionsappen när du använder SignalR Service-utlösarbindning. URL:en ska konfigureras i Uppströmsinställningar på SignalR Service-sidan.
              
               
              
              
            
När du använder SignalR Service-utlösare kan URL:en vara enkel och formaterad på följande sätt:
<Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
Finns Function_App_URL på funktionsappens översiktssida och API_KEY genereras av Azure Function. Du kan hämta API_KEY från signalr_extension på bladet Appnycklar i Funktionsapp.
              
               
              
              
            
Om du vill använda mer än en funktionsapp tillsammans med en SignalR Service kan uppströms också stödja komplexa routningsregler. Mer information finns i Uppströmsinställningar.
Steg för steg-exempel
Du kan följa exemplet i GitHub för att distribuera ett chattrum i funktionsappen med SignalR Service-utlösarbindning och uppströmsfunktion: Dubbelriktad chattrumsexempel