Compartilhar via


Associações do Serviço SignalR para o Azure Functions

Este conjunto de artigos explica como autenticar e enviar mensagens em tempo real para clientes conectados ao Serviço do Azure SignalR usando associações do Serviço do SignalR no Azure Functions. O Azure Functions Runtime versão 2. x e superior dá suporte a associações de entrada e saída para o Serviço do SignalR.

Ação Tipo
Processar mensagens no Serviço SignalR Associação de gatilho
Exibir a URL do ponto de extremidade de serviço e o token de acesso Associação de entrada
Enviar mensagens do Serviço do SignalR e gerenciar grupos Associação de saída

Instalar a extensão

O pacote NuGet da extensão instalado depende do modo C# usado no aplicativo de funções:

As funções são executadas em um processo de trabalho do C# isolado. Para saber mais, confira o Guia para executar C# do Azure Functions em um processo de trabalho isolado.

Adicione a extensão ao seu projeto instalando este pacote do NuGet.

Instalar pacote

A extensão do Serviço do SignalR faz parte de um pacote de extensão, que é especificado no arquivo de projeto host.json. Quando você cria um projeto para a versão 3. x ou posterior, esse pacote já deve estar instalado. Para saber mais, confira pacotes de extensão.

Adicionar dependência

Para usar as anotações do Serviço do 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 arquivo pom.xml.

<dependency>
    <groupId>com.microsoft.azure.functions</groupId>
    <artifactId>azure-functions-java-library-signalr</artifactId>
    <version>1.0.0</version>
</dependency>

conexões

Você pode usar a cadeia de conexão ou a identidade do Microsoft Entra para se conectar ao Serviço do Azure SignalR.

Cadeia de conexão

Para obter instruções sobre como recuperar a cadeia de conexão para o Serviço do Azure SignalR, consulte Cadeias de conexão no Serviço do 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 associação.

Conexões baseadas em identidade

Se você estiver usando a versão 1.7.0 ou superior, em vez de usar uma cadeia de conexão com um segredo, poderá fazer com que o aplicativo use uma identidade do Microsoft Entra.

Em primeiro lugar, você deve verificar se sua identidade do Microsoft Entra tem a função Proprietário do Serviço SignalR.

Em seguida, você definiria as configurações com um prefixo AzureSignalRConnectionStringcomum . Você pode personalizar o nome do prefixo com a connectionStringSetting propriedade da configuração de associação.

Nesse modo, as configurações incluem os seguintes itens:

Propriedade Modelo de variável de ambiente Descrição Obrigatório Valor de exemplo
URI de serviço AzureSignalRConnectionString__serviceUri O URI do ponto de extremidade de serviço. Quando você configura apenas o "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 o Azure Function implantado pretender 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 do Cliente AzureSignalRConnectionString__clientId Quando credential estiver definido como managedidentity, essa propriedade poderá ser definida para especificar a identidade atribuída pelo usuário a ser usada ao obter um token. A propriedade aceita uma 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 especificada, a identidade atribuída pelo sistema será usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido. Não 00000000-0000-0000-0000-000000000000
ID de Recurso AzureSignalRConnectionString__managedIdentityResourceId Quando credential estiver definido como managedidentity, essa propriedade pode ser definida para especificar o identificador de recurso a ser usado na obtenção de um token. A propriedade aceita um identificador de recurso correspondente à ID do recurso da identidade gerenciada definida pelo usuário. É inválido especificar uma ID de recurso e uma ID de cliente. Se nenhuma delas for especificada, a identidade atribuída pelo sistema será usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido. Não /subscriptions/00000000-0000-0000-0000-00000000000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice

Observação

Ao usar local.settings.json o arquivo no local, na Configuração de Aplicativos do Azure ou no Key Vault 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 pontos de extremidade

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.

Propriedade Modelo de variável de ambiente Descrição Obrigatório Valor de exemplo
URI de serviço Azure__SignalR__Endpoints__{endpointName}__serviceUri O URI do ponto de extremidade de serviço. Quando você configura apenas o "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 de Extremidade Azure__SignalR__Endpoints__{endpointName}__type Indica se o ponto de extremidade de serviço é primário ou secundário. Se não for especificado, ele assume Primary como padrão. Os valores válidos são Primary e Secondary, e não diferenciam maiúsculas de 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 o Azure Function implantado pretender 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 do Cliente Azure__SignalR__Endpoints__{endpointName}__clientId Quando credential estiver definido como managedidentity, essa propriedade poderá ser definida para especificar a identidade atribuída pelo usuário a ser usada ao obter um token. A propriedade aceita uma 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 especificada, a identidade atribuída pelo sistema será usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido. Não 00000000-0000-0000-0000-000000000000
ID de Recurso Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId Quando credential estiver definido como managedidentity, essa propriedade pode ser definida para especificar o identificador de recurso a ser usado na obtenção de um token. A propriedade aceita um identificador de recurso correspondente à ID do recurso da identidade gerenciada definida pelo usuário. É inválido especificar uma ID de recurso e uma ID de cliente. Se nenhuma delas for especificada, a identidade atribuída pelo sistema será usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido. Não /subscriptions/00000000-0000-0000-0000-0000000000000000000/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óximas etapas

Para obter detalhes sobre como configurar e usar o Serviço do SignalR e o Azure Functions juntos, veja Desenvolvimento e configuração do Azure Functions com o Serviço do Azure SignalR.