Associazioni del servizio SignalR per Funzioni di Azure
Questo set di articoli illustra come autenticare e inviare messaggi in tempo reale ai client connessi a Servizio Azure SignalR usando associazioni Servizio SignalR in Funzioni di Azure. Funzioni di Azure runtime versione 2.x e successive supporta le associazioni di input e output per Servizio SignalR.
Azione | Type |
---|---|
Gestire i messaggi da Servizio SignalR | Associazione di trigger |
Restituire l'URL dell'endpoint di servizio e il token di accesso | Associazione di input |
Inviare messaggi Servizio SignalR e gestire i gruppi | Associazione di output |
Installare l'estensione
Il pacchetto NuGet di estensione installato dipende dalla modalità C# usata nell'app per le funzioni:
Le funzioni sono eseguite in un processo di lavoro C# isolato. Per altre informazioni, vedere Guida per l'esecuzione di Funzioni di Azure C# in un processo di lavoro isolato.
Aggiungere l'estensione al progetto installando questo pacchetto NuGet.
Installare il bundle
L'estensione Servizio SignalR fa parte di un bundle di estensione, specificato nel file di progetto host.json. Quando si crea un progetto destinato alla versione 3.x o successiva, è necessario avere già installato questo bundle. Per altre informazioni, vedere bundle di estensioni.
Dipendenza dell'app
Per usare le annotazioni Servizio SignalR nelle funzioni Java, è necessario aggiungere una dipendenza all'artefatto azure-functions-java-library-signalr (versione 1.0 o successiva) al file pom.xml.
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-signalr</artifactId>
<version>1.0.0</version>
</dependency>
Connessioni
È possibile usare stringa di connessione o l'identità di Microsoft Entra per connettersi a Servizio Azure SignalR.
Stringa di connessione
Per istruzioni su come recuperare le stringa di connessione per il Servizio Azure SignalR, vedere Stringhe di connessione in Servizio Azure SignalR
Questo stringa di connessione deve essere archiviato in un'impostazione dell'applicazione con un nome AzureSignalRConnectionString
. È possibile personalizzare il nome dell'impostazione dell'applicazione con la connectionStringSetting
proprietà della configurazione dell'associazione.
Connessioni basate su identità
Se si usa la versione 1.7.0 o successiva, invece di usare un stringa di connessione con un segreto, è possibile che l'app usi un'identità Microsoft Entra.
Prima di tutto, è necessario assicurarsi che l'identità di Microsoft Entra abbia il ruolo Servizio SignalR Proprietario.
Definire quindi le impostazioni con un prefisso AzureSignalRConnectionString
comune. È possibile personalizzare il nome del prefisso con la connectionStringSetting
proprietà della configurazione dell'associazione.
In questa modalità, le impostazioni includono gli elementi seguenti:
Proprietà | Modello di variabile di ambiente | Descrizione | Richiesto | Valore di esempio |
---|---|---|---|---|
URI del servizio | AzureSignalRConnectionString__serviceUri |
URI dell'endpoint di servizio. Quando si configura solo l'URI del servizio, le estensioni tentano di usare il tipo DefaultAzureCredential per l'autenticazione con il servizio. | Sì | https://mysignalrsevice.service.signalr.net |
Credenziali token | AzureSignalRConnectionString__credential |
Definisce come ottenere un token per la connessione. Questa impostazione deve essere impostata su managedidentity se la funzione di Azure distribuita intende usare l'autenticazione dell'identità gestita. Questo valore è valido solo quando un'identità gestita è disponibile nell'ambiente di hosting. |
No | managedidentity |
ID client | AzureSignalRConnectionString__clientId |
Quando credential è impostato su managedidentity , questa proprietà può essere impostata per specificare l'identità assegnata dall'utente da usare per ottenere un token. La proprietà accetta un ID client corrispondente a un'identità assegnata dall'utente assegnata all'applicazione. Non è valido specificare sia un ID risorsa che un ID client. Se non specificata, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential . |
No | 00000000-0000-0000-0000-000000000000 |
ID risorsa | AzureSignalRConnectionString__managedIdentityResourceId |
Quando credential è impostato su managedidentity , questa proprietà può essere impostata per specificare l'identificatore della risorsa da usare quando si ottiene un token. La proprietà accetta un identificatore di risorsa corrispondente all'ID risorsa dell'identità gestita definita dall'utente. Non è valido specificare sia un ID risorsa che un ID client. Se non viene specificato nessuno dei due valori, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential . |
No | /subscriptions/000000000-0000-0000-0000-00000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice |
Nota
Quando si usa local.settings.json
il file in locale, app Azure Configurazione o Key Vault per specificare le impostazioni per le connessioni basate sull'identità, sostituire __
con :
nel nome dell'impostazione per assicurarsi che i nomi vengano risolti correttamente.
Ad esempio: AzureSignalRConnectionString:serviceUri
.
Impostazione di più endpoint
È anche possibile configurare più endpoint e specificare le impostazioni di identità per endpoint.
In questo caso, anteporre le impostazioni a Azure__SignalR__Endpoints__{endpointName}
. {endpointName}
è un nome arbitrario assegnato dall'utente per associare un gruppo di impostazioni a un endpoint di servizio. Non è possibile personalizzare il prefisso Azure__SignalR__Endpoints__{endpointName}
in base connectionStringSetting
alla proprietà .
Proprietà | Modello di variabile di ambiente | Descrizione | Richiesto | Valore di esempio |
---|---|---|---|---|
URI del servizio | Azure__SignalR__Endpoints__{endpointName}__serviceUri |
URI dell'endpoint del servizio. Quando si configura solo l'URI del servizio, le estensioni tentano di usare il tipo DefaultAzureCredential per l'autenticazione con il servizio. | Sì | https://mysignalrsevice1.service.signalr.net |
Tipo di endpoint | Azure__SignalR__Endpoints__{endpointName}__type |
Indica se l'endpoint del servizio è primario o secondario. Se non specificato, per impostazione predefinita viene impostato su Primary . I valori validi sono Primary e Secondary , senza distinzione tra maiuscole e minuscole. |
No | Secondary |
Credenziali token | Azure__SignalR__Endpoints__{endpointName}__credential |
Definisce come ottenere un token per la connessione. Questa impostazione deve essere impostata su managedidentity se la funzione di Azure distribuita intende usare l'autenticazione dell'identità gestita. Questo valore è valido solo quando un'identità gestita è disponibile nell'ambiente di hosting. |
No | managedidentity |
ID client | Azure__SignalR__Endpoints__{endpointName}__clientId |
Quando credential è impostato su managedidentity , questa proprietà può essere impostata per specificare l'identità assegnata dall'utente da usare per ottenere un token. La proprietà accetta un ID client corrispondente a un'identità assegnata dall'utente assegnata all'applicazione. Non è valido specificare sia un ID risorsa che un ID client. Se non specificata, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential . |
No | 00000000-0000-0000-0000-000000000000 |
ID risorsa | Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId |
Quando credential è impostato su managedidentity , questa proprietà può essere impostata per specificare l'identificatore della risorsa da usare quando si ottiene un token. La proprietà accetta un identificatore di risorsa corrispondente all'ID risorsa dell'identità gestita definita dall'utente. Non è valido specificare sia un ID risorsa che un ID client. Se non viene specificato nessuno dei due valori, viene usata l'identità assegnata dal sistema. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential . |
No | /subscriptions/000000000-0000-0000-0000-00000000000/resourceGroups/myrg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity |
Per altre informazioni su più endpoint, vedere Ridimensionare Servizio SignalR con più istanze
Passaggi successivi
Per informazioni dettagliate su come configurare e usare Servizio SignalR e Funzioni di Azure insieme, vedere Funzioni di Azure sviluppo e configurazione con Servizio Azure SignalR.