Compartilhar via


Início Rápido: Difundir mensagens em tempo real do aplicativo de console

O Serviço do Azure SignalR fornece a API REST para dar suporte a cenários de comunicação do servidor para o cliente, como transmissão. Você pode escolher qualquer linguagem de programação que possa fazer chamadas à API REST. Você pode postar mensagens para todos os clientes conectados, um cliente específico por nome ou um grupo de clientes.

Neste início rápido, você aprenderá a enviar mensagens de um aplicativo de linha de comando para aplicativos clientes conectados em C#.

Importante

As cadeias de conexão brutas aparecem nesse artigo apenas para fins de demonstração.

Uma cadeia de conexão inclui as informações de autorização necessárias para que o seu aplicativo acesse o serviço Azure Web PubSub. A chave de acesso dentro da cadeia de conexão é semelhante a uma senha raiz para o serviço. Em ambientes de produção, sempre proteja suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua sequência de conexão usando o Microsoft Entra ID.

Evite distribuir chaves de acesso para outros usuários, fazer hard-coding com elas ou salvá-las em qualquer lugar em texto sem formatação que seja acessível a outras pessoas. Gire suas chaves se você acredita que elas podem ter sido comprometidas.

Pré-requisitos

Este início rápido pode ser executado no macOS, Windows ou Linux.

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Entrar no Azure

Entre no portal do Azure usando a conta do Azure.

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Nesta seção, você criará uma instância básica do Azure SignalR para usar em seu aplicativo. As etapas a seguir usam o portal do Azure para criar uma nova instância, mas você também pode usar a CLI do Azure. Para obter mais informações, consulte o comando az signalr create na referência da CLI do serviço do Azure SignalR.

  1. Entre no portal do Azure.
  2. No canto superior esquerdo da página, escolha + Criar um recurso.
  3. Na página Criar um recurso, na caixa de texto serviços Pesquisa e marketplace, insira signalr e, em seguida, selecione Serviço do SignalR na lista.
  4. Na página Serviço do SignalR, selecione Criar.
  5. Na guia Noções básicas, você insere as informações essenciais para a nova instância do Serviço do SignalR. Insira os valores a seguir:
Campo Valor sugerido Descrição
Assinatura Escolha sua assinatura Selecione a assinatura que você deseja usar para criar uma nova instância do serviço do SignalR.
Grupo de recursos Criar um grupo de recursos chamado SignalRTestResources Selecione ou crie um grupo de recursos para seu recurso do SignalR. É útil criar um novo grupo de recursos para este tutorial em vez de usar um grupo de recursos existente. Para liberar recursos depois de concluir o tutorial, exclua o grupo de recursos.

A exclusão de um grupo de recursos também exclui todos os recursos que pertencem ao grupo. Essa ação não pode ser desfeita. Antes de excluir um grupo de recursos, certifique-se de que ele não contenha os recursos que você deseja manter.

Para obter mais informações, consulte Usando os grupos de recursos para gerenciar seus recursos do Azure.
Nome do recurso testsignalr Insira um nome exclusivo do recurso a ser usado para o recurso do SignalR. Se testsignalr já estiver sendo usado em sua região, adicione um dígito ou caractere até que o nome seja exclusivo.

O nome deve ser uma cadeia de caracteres com 1 a 63 caracteres, e deve conter somente números, letras e o hífen (-). O nome não pode começar nem terminar com o caractere hífen, e os caracteres hífen consecutivos não serão válidos.
Região Escolha a região Selecione a região apropriada para sua nova instância do serviço do SignalR.

O serviço do Azure SignalR não está disponível atualmente em todas as regiões. Para saber mais, confira Disponibilidade por região do serviço do Azure SignalR
Tipo de preços Selecione Alterar e, em seguida, escolha Gratuito (somente desenvolvimento/teste). Escolha Selecionar para confirmar sua escolha de tipo de preço. O serviço do Azure SignalR tem três tipos de preço: Gratuito, Standard e Premium. Os tutoriais usam o tipo Gratuito, a menos que indicado de outra forma nos pré-requisitos.

Para obter mais informações sobre as diferenças de funcionalidade entre tipos e preços, consulte preço do serviço do Azure SignalR
Modo de serviço Escolha o modo de serviço apropriado Use Padrão quando hospedar a lógica do hub do SignalR em seus aplicativos Web e usar o serviço SignalR como um proxy. Use Sem servidor quando usar tecnologias sem servidor, como o Azure Functions, para hospedar a lógica do hub do SignalR.

O modo Clássico é apenas para compatibilidade com versões anteriores e não é recomendável usar.

Para obter mais informações, confira Modo de serviço no serviço do Azure SignalR.

Você não precisa alterar as configurações nas guias Rede e Marcações para os tutoriais do SignalR.

  1. Selecione o botão Revisar + criar na parte inferior da guia Noções básicas.
  2. Na guia Revisar + Criar, revise os valores e, em seguida, selecione Criar. A implantação leva alguns momentos para ser concluída.
  3. Depois que a implantação estiver concluída, selecione o botão Ir para o recurso.
  4. Na tela de recursos do SignalR, selecione Chaves no menu à esquerda, em Configurações.
  5. Copie a Cadeia de conexão para a chave primária. Você precisará dessa cadeia de conexão para configurar seu aplicativo posteriormente neste tutorial.

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Clonar o aplicativo de exemplo

Enquanto o serviço está sendo implantado, vamos preparar o código. Clonar o aplicativo de amostra do GitHub. Em seguida, defina a cadeia de conexão do Serviço SignalR como o aplicativo. Por fim, execute o aplicativo localmente.

  1. Abra uma janela de terminal git. Mude para uma pasta em que deseja clonar o projeto de exemplo.

  2. Execute o comando a seguir para clonar o repositório de exemplo. Este comando cria uma cópia do aplicativo de exemplo no seu computador.

    git clone https://github.com/aspnet/AzureSignalR-samples.git
    

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Criar e executar a amostra

Este exemplo é um aplicativo de console mostrando o uso do Azure SignalR Service. Ele fornece dois modos:

  • Modo de servidor: use comandos simples para chamar a API REST do Azure SignalR Service.
  • Modo cliente: conectar-se ao Azure SignalR Service e receber mensagens de servidor.

Você também aprenderá a gerar um token de acesso para se autenticar no Serviço do Azure SignalR.

Criar o arquivo executável

Como exemplo, usamos macOS osx.10.13-x64. Você pode encontrar referências sobre como criar em outras plataformas.

cd AzureSignalR-samples/samples/Serverless/

dotnet publish -c Release -r osx.10.13-x64

Iniciar um cliente

As cadeias de conexão brutas aparecem nesse artigo apenas para fins de demonstração. Em ambientes de produção, sempre proteja suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua sequência de conexão usando o Microsoft Entra ID.

cd bin/Release/netcoreapp2.1/osx.10.13-x64/

Serverless client <ClientName> -c "<ConnectionString>" -h <HubName>

Iniciar um servidor

cd bin/Release/netcoreapp2.1/osx.10.13-x64/

Serverless server -c "<ConnectionString>" -h <HubName>

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Executar o exemplo sem publicação

Você também pode executar o seguinte comando para iniciar um servidor ou cliente

# Start a server
dotnet run -- server -c "<ConnectionString>" -h <HubName>

# Start a client
dotnet run -- client <ClientName> -c "<ConnectionString>" -h <HubName>

Use segredos do usuário para especificar a Cadeia de Conexão

Você pode executar dotnet user-secrets set Azure:SignalR:ConnectionString "<ConnectionString>" no diretório raiz do exemplo. Depois disso, você não precisa mais da opção -c "<ConnectionString>".

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Uso

Depois que o servidor for iniciado, use o comando para enviar a mensagem:

send user <User Id>
send users <User List>
send group <Group Name>
send groups <Group List>
broadcast

Você pode iniciar vários clientes com nomes de clientes diferentes.

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Integração com serviços que não são da Microsoft

O Serviço do Azure SignalR permite que serviços que não são da Microsoft se integrem ao sistema.

Definição de especificações técnicas

A tabela a seguir mostra todas as versões das APIs REST com suporte atualmente. Você também pode encontrar o arquivo de definição de cada versão específica

Versão Estado de API Porta Específicas
1.0-preview Disponível 5002 Swagger
1.0 Disponível Standard Swagger

A lista de APIs disponíveis para cada versão específica está disponível na lista a seguir.

API 1.0-preview 1.0
Transmitir para todos
Transmitir para um grupo
Transmitir para alguns grupos (Preterido) N / A
Enviar para um usuário
Enviar para alguns usuários (Preterido) N / A
Adicionar um usuário a um grupo N / A
Remover um usuário de um grupo N / A
Verificar a existência do usuário N / A
Remover um usuário de todos os grupos N / A
Enviar para uma conexão N / A
Adicionar uma conexão a um grupo N / A
Remover uma conexão de um grupo N / A
Fechar uma conexão de cliente N / A
Integridade do Serviço N / A

Transmitir para todos

Versão Método HTTP da API URL de Solicitação Corpo da solicitação
1.0-preview POST https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name> {"target": "<method-name>", "arguments": [...]}
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name> {"target": "<method-name>", "arguments": [...]}

Transmitir para um grupo

Versão Método HTTP da API URL de Solicitação Corpo da solicitação
1.0-preview POST https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/group/<group-name> {"target": "<method-name>", "arguments": [...]}
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name> {"target": "<method-name>", "arguments": [...]}

Envio para um usuário

Versão Método HTTP da API URL de Solicitação Corpo da solicitação
1.0-preview POST https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/user/<user-id> {"target": "<method-name>", "arguments": [...]}
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id> {"target": "<method-name>", "arguments": [...]}

Adicionar um usuário a um grupo

Versão Método HTTP da API URL de Solicitação
1.0 PUT https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>

Remover um usuário de um grupo

Versão Método HTTP da API URL de Solicitação
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>

Verificar a existência do usuário em um grupo

Versão da API Método HTTP da API URL de Solicitação
1.0 GET https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups/<group-name>
1.0 GET https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>
Código de status de resposta Descrição
200 O usuário existe
404 O usuário não existe

Remover um usuário de todos os grupos

Versão da API Método HTTP da API URL de Solicitação
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups

Enviar uma mensagem para uma conexão

Versão da API Método HTTP da API URL de Solicitação Corpo da solicitação
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id> { "target":"<method-name>", "arguments":[ ... ] }

Adicionar uma conexão a um grupo

Versão da API Método HTTP da API URL de Solicitação
1.0 PUT https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id>
1.0 PUT https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name>

Remover uma conexão de um grupo

Versão da API Método HTTP da API URL de Solicitação
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id>
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name>

Fechar uma conexão de cliente

Versão da API Método HTTP da API URL de Solicitação
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>?reason=<close-reason>

Integridade do Serviço

Versão da API Método HTTP da API URL de Solicitação
1.0 GET https://<instance-name>.service.signalr.net/api/v1/health
Código de status de resposta Descrição
200 Serviço em execução
5xx Erro de Serviço

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Limpar os recursos

Se você não pretende continuar a usar este aplicativo, exclua todos os recursos criados por esse início rápido com as seguintes etapas para não incorrer em alterações:

  1. No portal do Azure, selecione Grupos de recursos na extremidade esquerda, depois selecione o recurso de grupo que você criou. Como alternativa, você pode usar a caixa de pesquisa para localizar o grupo de recursos pelo nome.

  2. Na janela que se abre, selecione o grupo de recursos e clique em Excluir grupo de recursos.

  3. Na nova janela, digite o nome do grupo de recursos a ser excluído, depois clique em Excluir.

Está com problemas? Experimente o guia de solução de problemas ou fale conosco.

Próximas etapas

Neste início rápido, você aprendeu como usar a API REST para transmitir mensagens em tempo real do SignalR Service aos clientes. Em seguida, saiba mais sobre como desenvolver e implantar o Azure Functions com SignalR Service associação, que é criada sobre a API REST.