Introdução ao Relay Hybrid Connections WebSockets no Node.js

Neste início rápido, você cria Node.js aplicativos de remetente e recetor que enviam e recebem mensagens usando WebSockets de Conexões Híbridas no Azure Relay. Para saber mais sobre o Azure Relay em geral, consulte Azure Relay.

Neste guia de início rápido, você executa as seguintes etapas:

  1. Crie um espaço de nomes de Reencaminhamento com o Portal do Azure.
  2. Crie uma ligação híbrida nesse espaço de nomes, com o portal do Azure.
  3. Escrever uma aplicação de consola (serviço de escuta) de servidor para receber mensagens.
  4. Escrever uma aplicação de consola (remetente) de cliente para enviar mensagens.
  5. Execute aplicativos.

Pré-requisitos

Criar um espaço de nomes

  1. Inicie sessão no portal do Azure.

  2. Selecione Todos os serviços no menu à esquerda. Selecione Integração, procure Relés, mova o rato sobre Relés e, em seguida, selecione Criar.

    Captura de tela mostrando a seleção do botão Relés -> Criar.

  3. Na página Criar namespace, siga estas etapas:

    1. Escolha uma assinatura do Azure na qual criar o namespace.

    2. Para Grupo de recursos, escolha um grupo de recursos existente no qual colocar o namespace ou crie um novo.

    3. Insira um nome para o namespace Relay.

    4. Selecione a região na qual seu namespace deve ser hospedado.

    5. Selecione Rever + criar na parte inferior da página.

      Captura de tela mostrando a página Criar namespace.

    6. Na página Rever + criar, selecione Criar.

    7. Depois de alguns minutos, você verá a página Retransmissão para o namespace.

      Captura de tela mostrando a home page do namespace Relay.

Obter credenciais de gestão

  1. Na página Retransmissão, selecione Políticas de acesso compartilhado no menu à esquerda. `

  2. Na página Políticas de acesso compartilhado, selecione RootManageSharedAccessKey.

  3. Em Política SAS: RootManageSharedAccessKey, selecione o botão Copiar ao lado de Cadeia de Conexão Primária. Esta ação copia a cadeia de conexão para a área de transferência para uso posterior. Cole este valor no Bloco de Notas ou noutra localização temporária.

  4. Repita o passo anterior para copiar e colar o valor da Chave primária para uma localização temporária para utilizar mais tarde.

    Captura de tela mostrando as informações de conexão para o namespace Relay.

Criar uma ligação híbrida

Na página Retransmissão para seu namespace, siga estas etapas para criar uma conexão híbrida.

  1. No menu à esquerda, em Entidades, selecione Conexões híbridas e, em seguida, selecione + Conexão híbrida.

    Captura de tela mostrando a página Conexões híbridas.

  2. Na página Criar Conexão Híbrida, insira um nome para a conexão híbrida e selecione Criar.

    Captura de tela mostrando a página Criar conexão híbrida.

Criar uma aplicação de servidor (serviço de escuta)

Para escutar e receber mensagens do Reencaminhamento, escreva uma aplicação de consola Node.js.

Criar uma aplicação Node.js

Criar um novo ficheiro JavaScript denominado listener.js.

Adicionar o pacote Relay

Execute npm install hyco-ws a partir de uma linha de comandos do Nó na sua pasta do projeto.

Escrever alguns códigos para receber mensagens

  1. Adicione a seguinte constante à parte superior do ficheiro listener.js.

    const WebSocket = require('hyco-ws');
    
  2. Adicione as seguintes constantes ao ficheiro listener.js para obter os detalhes da ligação híbrida. Substitua os marcadores de posição entre parênteses retos pelos valores obtidos quando criou a ligação híbrida.

    • const ns - O espaço de nomes do Reencaminhamento. Certifique-se de que utiliza o nome de espaço de nomes totalmente qualificado, por exemplo, {namespace}.servicebus.windows.net.
    • const path - O nome da ligação híbrida.
    • const keyrule - Nome da sua chave de Políticas de Acesso Compartilhado, que é RootManageSharedAccessKey por padrão.
    • const key - A chave primária do namespace que você salvou anteriormente.
  3. Adicione o seguinte código ao ficheiro listener.js:

    var wss = WebSocket.createRelayedServer(
    {
        server : WebSocket.createRelayListenUri(ns, path),
        token: WebSocket.createRelayToken('http://' + ns, keyrule, key)
    }, 
    function (ws) {
        console.log('connection accepted');
        ws.onmessage = function (event) {
            console.log(event.data);
        };
        ws.on('close', function () {
            console.log('connection closed');
        });       
    });
    
    console.log('listening');
    
    wss.on('error', function(err) {
        console.log('error' + err);
    });
    

    Eis o aspeto que o seu ficheiro listener.js deve ter:

    const WebSocket = require('hyco-ws');
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    var wss = WebSocket.createRelayedServer(
        {
            server : WebSocket.createRelayListenUri(ns, path),
            token: WebSocket.createRelayToken('http://' + ns, keyrule, key)
        }, 
        function (ws) {
            console.log('connection accepted');
            ws.onmessage = function (event) {
                console.log(event.data);
            };
            ws.on('close', function () {
                console.log('connection closed');
            });       
    });
    
    console.log('listening');
    
    wss.on('error', function(err) {
        console.log('error' + err);
    });
    

Criar uma aplicação cliente (remetente)

Para enviar mensagens para o Reencaminhamento, escreva uma aplicação de consola Node.js.

Criar uma aplicação Node.js

Criar um novo ficheiro JavaScript denominado sender.js.

Adicionar o pacote do Gerenciador de Pacotes de Nó de Retransmissão

Execute npm install hyco-ws a partir de uma linha de comandos do Nó na sua pasta do projeto.

Escrever alguns códigos para enviar mensagens

  1. Adicione o seguinte constants à parte superior do ficheiro sender.js.

    const WebSocket = require('hyco-ws');
    const readline = require('readline')
        .createInterface({
            input: process.stdin,
            output: process.stdout
        });;
    
  2. Adicione as seguintes constantes ao ficheiro sender.js para obter os detalhes da ligação híbrida. Substitua os marcadores de posição entre parênteses retos pelos valores obtidos quando criou a ligação híbrida.

    • const ns - O espaço de nomes do Reencaminhamento. Certifique-se de que utiliza o nome de espaço de nomes totalmente qualificado, por exemplo, {namespace}.servicebus.windows.net.
    • const path - O nome da ligação híbrida.
    • const keyrule - Nome da sua chave de Políticas de Acesso Compartilhado, que é RootManageSharedAccessKey por padrão.
    • const key - A chave primária do namespace que você salvou anteriormente.
  3. Adicione o seguinte código ao ficheiro sender.js:

    WebSocket.relayedConnect(
        WebSocket.createRelaySendUri(ns, path),
        WebSocket.createRelayToken('http://'+ns, keyrule, key),
        function (wss) {
            readline.on('line', (input) => {
                wss.send(input, null);
            });
    
            console.log('Started client interval.');
            wss.on('close', function () {
                console.log('stopping client interval');
                process.exit();
            });
        }
    );
    

    Eis o aspeto que o seu ficheiro sender.js deve ter:

    const WebSocket = require('hyco-ws');
    const readline = require('readline')
        .createInterface({
            input: process.stdin,
            output: process.stdout
        });;
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    WebSocket.relayedConnect(
        WebSocket.createRelaySendUri(ns, path),
        WebSocket.createRelayToken('http://'+ns, keyrule, key),
        function (wss) {
            readline.on('line', (input) => {
                wss.send(input, null);
            });
    
            console.log('Started client interval.');
            wss.on('close', function () {
                console.log('stopping client interval');
                process.exit();
            });
        }
    );
    

Nota

O código de exemplo neste artigo usa uma cadeia de conexão para autenticar em um namespace do Azure Relay para manter o tutorial simples. Recomendamos que você use a autenticação do Microsoft Entra ID em ambientes de produção, em vez de usar cadeias de conexão ou assinaturas de acesso compartilhado, que podem ser mais facilmente comprometidas. Para obter informações detalhadas e código de exemplo para usar a autenticação do Microsoft Entra ID, consulte Autenticar e autorizar um aplicativo com o Microsoft Entra ID para acessar entidades do Azure Relay e Autenticar uma identidade gerenciada com o Microsoft Entra ID para acessar os recursos do Azure Relay.

Executar as aplicações

  1. Execute a aplicação de servidor: a partir de um tipo de linha de comandos node listener.js do Node.js.

  2. Execute a aplicação de cliente: a partir de um tipo de linha de comandos node sender.js do Node.js e introduza algum texto.

  3. Certifique-se de que a consola da aplicação de servidor produz o texto que foi introduzido na aplicação cliente.

    Janelas de console testando os aplicativos cliente e servidor.

Parabéns, criou uma aplicação de Ligações Híbridas ponto a ponto com o Node.js!

Próximos passos

Neste início rápido, você criou Node.js aplicativos cliente e servidor que usavam WebSockets para enviar e receber mensagens. O recurso Conexões Híbridas do Azure Relay também dá suporte ao uso de HTTP para enviar e receber mensagens. Para saber como usar HTTP com Conexões Híbridas de Retransmissão do Azure, consulte o Guia de início rápido Node.js HTTP.

Neste início rápido, você usou Node.js para criar aplicativos cliente e servidor. Para saber como escrever aplicativos cliente e servidor usando o .NET Framework, consulte o início rápido do .NET WebSockets ou o início rápido do HTTP do .NET.