Enlaces do Serviço SignalR para as Funções do Azure
Este conjunto de artigos explica como autenticar e enviar mensagens em tempo real para clientes conectados ao Serviço SignalR do Azure usando associações do Serviço SignalR no Azure Functions. O tempo de execução do Azure Functions versão 2.x e superior dá suporte a ligações de entrada e saída para o Serviço SignalR.
Ação | Type |
---|---|
Manipular mensagens do Serviço SignalR | Vinculação de gatilho |
Retornar a URL do ponto de extremidade do serviço e o token de acesso | Vinculação de entrada |
Enviar mensagens do Serviço SignalR e gerenciar grupos | Vinculação de saída |
Instalar a extensão
O pacote de extensão NuGet que você instala depende do modo C# que você está usando em seu aplicativo de função:
As funções são executadas em um processo de trabalho C# isolado. Para saber mais, consulte Guia para executar o C# Azure Functions em um processo de trabalho isolado.
Adicione a extensão ao seu projeto instalando este pacote NuGet.
Instalar pacote
A extensão do Serviço SignalR faz parte de um pacote de extensão, que é especificado no seu arquivo de projeto host.json. Quando você cria um projeto destinado à versão 3.x ou posterior, você já deve ter esse pacote instalado. Para saber mais, consulte Pacote de extensão.
Adicionar dependência
Para usar as anotações do Serviço SignalR em funções Java, você precisa adicionar uma dependência ao artefato azure-functions-java-library-signalr (versão 1.0 ou superior) ao seu arquivo pom.xml .
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-signalr</artifactId>
<version>1.0.0</version>
</dependency>
Ligações
Você pode usar a cadeia de conexão ou a identidade do Microsoft Entra para se conectar ao Serviço Azure SignalR.
Connection string
Para obter instruções sobre como recuperar a cadeia de conexão para seu Serviço Azure SignalR, consulte Cadeias de conexão no Serviço Azure SignalR
Essa cadeia de conexão deve ser armazenada em uma configuração de aplicativo com um nome AzureSignalRConnectionString
. Você pode personalizar o nome da configuração do aplicativo com a connectionStringSetting
propriedade da configuração de vinculação.
Conexões baseadas em identidade
Se estiver a utilizar a versão 1.7.0 ou superior, em vez de utilizar uma cadeia de ligação com um segredo, pode fazer com que a aplicação utilize uma identidade Microsoft Entra.
Em primeiro lugar, você deve certificar-se de que sua identidade do Microsoft Entra tem a função SignalR Service Owner.
Em seguida, você definiria as configurações com um prefixo AzureSignalRConnectionString
comum. Você pode personalizar o nome do prefixo com a connectionStringSetting
propriedade da configuração de vinculação.
Neste modo, as configurações incluem os seguintes itens:
Property | Modelo de variável de ambiente | Description | Obrigatório | Valor de exemplo |
---|---|---|---|---|
URI de serviço | AzureSignalRConnectionString__serviceUri |
O URI do seu ponto de extremidade de serviço. Quando você configura apenas "URI de serviço", as extensões tentam usar o tipo DefaultAzureCredential para autenticar com o serviço. | Sim | https://mysignalrsevice.service.signalr.net |
Credencial de token | AzureSignalRConnectionString__credential |
Define como um token deve ser obtido para a conexão. Essa configuração deve ser definida como managedidentity se sua Função do Azure implantada pretende usar a autenticação de identidade gerenciada. Esse valor só é válido quando uma identidade gerenciada está disponível no ambiente de hospedagem. |
Não | managedidentity |
ID de Cliente | AzureSignalRConnectionString__clientId |
Quando credential é definido como managedidentity , essa propriedade pode ser definida para especificar a identidade atribuída pelo usuário a ser usada ao obter um token. A propriedade aceita um ID de cliente correspondente a uma identidade atribuída pelo usuário atribuída ao aplicativo. É inválido especificar uma ID de recurso e uma ID de cliente. Se não for especificado, a identidade atribuída ao sistema será usada. Esta propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não deveria ser definida. |
Não | 00000000-0000-0000-0000-000000000000 |
ID do Recurso | AzureSignalRConnectionString__managedIdentityResourceId |
Quando credential é definido como managedidentity , essa propriedade pode ser definida para especificar o Identificador de recurso a ser usado ao obter um token. A propriedade aceita um identificador de recurso correspondente ao ID do recurso da identidade gerenciada definida pelo usuário. É inválido especificar um ID de recurso e um ID de cliente. Se nenhum dos dois for especificado, a identidade atribuída ao sistema será usada. Esta propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não deveria ser definida. |
Não | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice |
Nota
Ao usar local.settings.json
o arquivo local, a Configuração do Aplicativo do Azure ou o Cofre da Chave para fornecer configurações para conexões baseadas em identidade, substitua __
por :
no nome da configuração para garantir que os nomes sejam resolvidos corretamente.
Por exemplo, AzureSignalRConnectionString:serviceUri
.
Configuração de vários endpoints
Você também pode configurar vários pontos de extremidade e especificar configurações de identidade por ponto de extremidade.
Nesse caso, prefixe suas configurações com Azure__SignalR__Endpoints__{endpointName}
. O {endpointName}
é um nome arbitrário atribuído por você para associar um grupo de configurações a um ponto de extremidade de serviço. O prefixo Azure__SignalR__Endpoints__{endpointName}
não pode ser personalizado por connectionStringSetting
propriedade.
Property | Modelo de variável de ambiente | Description | Obrigatório | Valor de exemplo |
---|---|---|---|---|
URI de serviço | Azure__SignalR__Endpoints__{endpointName}__serviceUri |
O URI do seu ponto de extremidade de serviço. Quando você configura apenas "URI de serviço", as extensões tentam usar o tipo DefaultAzureCredential para autenticar com o serviço. | Sim | https://mysignalrsevice1.service.signalr.net |
Tipo de Ponto Final | Azure__SignalR__Endpoints__{endpointName}__type |
Indica se o ponto de extremidade do serviço é primário ou secundário. Se não for especificado, o padrão será Primary . Os valores válidos são Primary e , sem distinção entre maiúsculas e Secondary minúsculas. |
Não | Secondary |
Credencial de token | Azure__SignalR__Endpoints__{endpointName}__credential |
Define como um token deve ser obtido para a conexão. Essa configuração deve ser definida como managedidentity se sua Função do Azure implantada pretende usar a autenticação de identidade gerenciada. Esse valor só é válido quando uma identidade gerenciada está disponível no ambiente de hospedagem. |
Não | managedidentity |
ID de Cliente | Azure__SignalR__Endpoints__{endpointName}__clientId |
Quando credential é definido como managedidentity , essa propriedade pode ser definida para especificar a identidade atribuída pelo usuário a ser usada ao obter um token. A propriedade aceita um ID de cliente correspondente a uma identidade atribuída pelo usuário atribuída ao aplicativo. É inválido especificar uma ID de recurso e uma ID de cliente. Se não for especificado, a identidade atribuída ao sistema será usada. Esta propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não deveria ser definida. |
Não | 00000000-0000-0000-0000-000000000000 |
ID do Recurso | Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId |
Quando credential é definido como managedidentity , essa propriedade pode ser definida para especificar o Identificador de recurso a ser usado ao obter um token. A propriedade aceita um identificador de recurso correspondente ao ID do recurso da identidade gerenciada definida pelo usuário. É inválido especificar um ID de recurso e um ID de cliente. Se nenhum dos dois for especificado, a identidade atribuída ao sistema será usada. Esta propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não deveria ser definida. |
Não | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myrg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity |
Para obter mais informações sobre vários pontos de extremidade, consulte Dimensionar o serviço SignalR com várias instâncias
Próximos passos
Para obter detalhes sobre como configurar e usar o Serviço SignalR e o Azure Functions juntos, consulte Desenvolvimento e configuração do Azure Functions com o Serviço SignalR do Azure.