Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, você aprenderá a criar um aplicativo de chat usando o Web PubSub para Socket.IO no Modo Sem Servidor com o Azure Functions. O tutorial irá guiá-lo através da proteção do seu aplicativo com autenticação baseada em identidade, enquanto trabalha online.
A fonte do projeto usa o Bicep para implantar a infraestrutura no Azure e as Ferramentas Principais do Azure Functions para implantar o código no Aplicativo de Função.
Pré-requisitos
Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
Ferramentas principais do Azure Functions.
Obter o código de exemplo
Encontre o código de exemplo: Socket.IO Exemplo sem servidor (TS)
git clone https://github.com/Azure/azure-webpubsub.git
cd ./sdk/webpubsub-socketio-extension/examples/chat-serverless-typescript
Implementar infraestrutura
Os exemplos de chat precisam implantar vários serviços no Azure:
- Aplicativo Azure Function
- Web PubSub para Socket.IO
- Identidade gerenciada: identidade para comunicação entre serviços
Usamos o Bicep para implantar a infraestrutura. O arquivo localiza na ./infra pasta. Implante-o com o comando az:
az deployment sub create -n "<deployment-name>" -l "<deployment-location>" --template-file ./infra/main.bicep --parameters environmentName="<env-name>" location="<location>"
-
<deployment-name>: O nome da implantação. -
<deployment-location>: O local dos metadados de implantação. Observe que não é o local onde os recursos são implantados. -
<env-name>: O nome é uma parte do nome do grupo de recursos e do nome do recurso. -
<location>: A localização dos recursos.
Revisão da infraestrutura
Na versão de infraestrutura, implantamos um Aplicativo de Função do Azure no plano de consumo e a Conta de Monitor e Armazenamento exigida pelo Aplicativo de Função. Também implantamos um Web PubSub para Socket.IO recurso no modo sem servidor.
Para fins de autenticação baseada em identidade, implantamos uma identidade gerenciada atribuída pelo usuário, a atribuímos ao Function App e ao recurso Socket.IO e concedemos a ela algumas permissões:
- Função de proprietário de dados de Blob de armazenamento: Acessar o armazenamento para o aplicativo de função
- Função de Editor de Métricas de Monitoramento: Monitor de acesso para o Aplicativo de Função
- Função de proprietário do serviço Web PubSub: Access Web PubSub for Socket.IO for Function App
De acordo com Configurar seu aplicativo Azure Functions para usar a entrada do Microsoft Entra, criamos uma Entidade de Serviço. Para evitar o uso de segredo para a Entidade de Serviço, usamos credenciais de identidade federada.
Implantar exemplo no aplicativo de função
Preparamos um script bash para implantar o código de exemplo no aplicativo de função:
# Deploy the project
./deploy/deploy.sh "<deployment-name>"
Revise os detalhes da implantação
Precisamos executar duas etapas para implantar o aplicativo de exemplo.
Publicar código no Aplicativo de Função (Usar as Ferramentas Principais do Azure Functions)
func extensions sync npm install npm run build func azure functionapp publish <function-app-name>Configure o Web PubSub para Socket.IO para adicionar uma configuração de hub que pode enviar solicitação para o aplicativo de função. De acordo com a limitação do provedor Webhook do Function App, você precisa obter uma chave de extensão preenchida pelo Function. Obtenha mais detalhes em Trigger Binding. E como usamos a autenticação baseada em identidade, nas configurações do hub, você precisa atribuir o recurso de destino, que é o clientId da entidade de serviço criada anteriormente.
code=$(az functionapp keys list -g <resource-group> -n <function-name> --query systemKeys.socketio_extension -o tsv) az webpubsub hub create -n <socketio-name> -g <resource-group> --hub-name "hub" --event-handler url-template="https://${<function-name>}.azurewebsites.net/runtime/webhooks/socketio?code=${code}" user-event-pattern="*" auth-type="ManagedIdentity" auth-resource="<service-principal-client-id>"
Executar aplicativo de exemplo
Depois que o código for implantado, visite o site para experimentar o exemplo:
https://<function-endpoint>/api/index
Próximos passos
Em seguida, você pode seguir o tutorial para escrever o aplicativo passo a passo: