Todos os produtos
Search
Central de documentação

IoT Platform:Exemplo de conexão com o SDK para Node.js

Última atualização: Jun 26, 2026

Este tópico demonstra como usar o SDK AMQP para Node.js a fim de se conectar à IoT Platform do Alibaba Cloud e receber mensagens por meio de assinatura no lado do servidor.

Pré-requisitos

Você já obteve um ID de grupo de consumidores e assinou as mensagens dos tópicos necessários.

Configure o ambiente de desenvolvimento

É necessário ter o Node.js 8.0.0 ou superior instalado.

Baixe e instale o SDK

Para o SDK AMQP em Node.js, recomendamos o uso da biblioteca rhea. Acesse rhea para baixar a biblioteca e consultar sua documentação.

Este exemplo utiliza o comando npm install rhea para instalar a biblioteca rhea.

Procedimento

  1. Em um sistema Windows ou Linux, baixe e instale o Node.js. Este tópico usa como exemplo um sistema Windows 10 (64 bits) e o pacote de instalação node-v14.15.1-x64.msi.

  2. Após a instalação, abra uma interface de linha de comando e execute o seguinte comando para verificar a versão do Node.js.

    node --version

    Uma instalação bem-sucedida retorna o número da versão:

    v14.15.1
  3. Crie um arquivo JavaScript, como amqp.js, para armazenar o código de exemplo.

    Modifique os parâmetros conforme descrito na tabela abaixo.

    Importante

    Especifique valores válidos para os parâmetros. Caso contrário, o cliente AMQP não conseguirá se conectar à IoT Platform.

    const container = require('rhea');
    const crypto = require('crypto');
    // Exposing your AccessKey pair can compromise your account security. 
    // This code retrieves the AccessKey pair from environment variables for demonstration only.
    var accessKey = process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'];
    var accessSecret = process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'];
    // Create a connection.
    var connection = container.connect({
        // The endpoint. For more information, see the documentation on how to connect an AMQP client.
        'host': '${YourHost}',
        'port': 5671,
        'transport':'tls',
        'reconnect':true,
        'idle_time_out':60000,
        // The username format. For more information, see the documentation on how to connect an AMQP client.
        'username':'${YourClientId}|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=' + accessKey + ',iotInstanceId=${YourIotInstanceId},consumerGroupId=${YourConsumerGroupId}|', 
        // Calculate the signature. For more information about the password format, see the documentation on how to connect an AMQP client.
        'password': hmacSha1(accessSecret, 'authId='+ accessKey +'&timestamp=1573489088171'),
    });
    // Create a receiver link.
    var receiver = connection.open_receiver();
    // The callback function for receiving messages pushed from the cloud.
    container.on('message', function (context) {
        var msg = context.message;
        var messageId = msg.message_id;
        var topic = msg.application_properties.topic;
        var content = Buffer.from(msg.body.content).toString();
        // Output the content.
        console.log(content);
        // Send an ACK. Do not include time-consuming operations in the callback function.
        context.delivery.accept();
    });
    // Calculate the password signature.
    function hmacSha1(key, context) {
        return Buffer.from(crypto.createHmac('sha1', key).update(context).digest())
            .toString('base64');
    }

    Parâmetro

    Exemplo

    Descrição

    host

    iot-cn-***.amqp.iothub.aliyuncs.com

    O endpoint AMQP.

    Para obter o endpoint AMQP (${YourHost}), consulte Visualizar e configurar endpoints de instância.

    username

    'test |authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=LTAI,iotInstanceId=,consumerGroupId=DEFAULT_GROUP|'

    As credenciais de autenticação para conexão com a IoT Platform. Esta string contém os seguintes parâmetros:

    • ${YourClientId}: Substitua pelo seu ID de cliente. É possível definir um ID personalizado com até 64 caracteres. Recomendamos o uso de um identificador exclusivo, como UUID, endereço MAC ou endereço IP do servidor que executa seu cliente AMQP.

      Após a conexão do cliente AMQP, você pode visualizar esse parâmetro no console da IoT Platform. No console da sua instância, acesse Message Forwarding > Server-side Subscription > Consumer Groups. Na aba, clique em View ao lado do seu grupo de consumidores. A página Consumer Group Details exibe o ID do cliente para ajudar na distinção entre os clientes.

    • ${YourAccessKeyId} e ${YourAccessKeySecret}: Substitua pelo seu AccessKey ID e AccessKey Secret.

      Para obtê-los, faça login no console da IoT Platform, passe o ponteiro sobre sua foto de perfil no canto superior direito e clique em AccessKey Management.

      Nota

      Se você utilizar um usuário RAM, será necessário anexar a política AliyunIOTFullAccess a esse usuário. Caso contrário, a conexão falhará. Para mais informações, consulte Acesso de usuário RAM.

    • ${YourIotInstanceId}: Substitua pelo ID da sua instância.

      Faça login no console da IoT Platform. O ID da instância está disponível na aba Overview da sua instância.

      Importante

      Se a aba Overview não estiver disponível ou sua instância não possuir um ID, remova o parâmetro iotInstanceId=${YourIotInstanceId} da string de nome de usuário.

    • ${YourConsumerGroupId}: Substitua pelo ID do seu grupo de consumidores.

      Para localizar o ID do grupo de consumidores, faça login no console da IoT Platform. No console da sua instância, acesse Message Forwarding > Server-side Subscription > Consumer Groups.

    password

    hmacSha1('yourAccessKeySecret','authId=LTAI&timestamp=1573489088171')

  4. Abra uma interface de linha de comando, acesse o diretório que contém seu arquivo amqp.js e execute o seguinte comando para instalar a biblioteca rhea:

    npm install rhea

    Após a conclusão do comando, o diretório raiz do seu projeto conterá uma pasta node_modules, seu arquivo amqp.js e um arquivo package-lock.json.

  5. Na janela do CMD, insira o seguinte comando para executar o código amqp.js e iniciar o servidor do cliente AMQP.

    node amqp.js

Resultados do exemplo

  • Sucesso: Em caso de conexão bem-sucedida, o cliente começa a receber mensagens e registra uma saída semelhante à seguinte. Este exemplo mostra dados de temperatura e umidade reportados por um dispositivo.

    xxx>node iot_amqp.js
    {"deviceType":"CustomCategory","iotId":"xxx","requestId":"1613748030337","checkFailedData":{},"productKey":"xxx","gmtCreate":1613747903528,
    "deviceName":"xxx","items":{"Temperature":{"value":xxx,"time":1613747903526},"Humidity":{"value":23,"time":1613747903526}}}
    {"deviceType":"CustomCategory","iotId":"xxx","requestId":"1613729851729","checkFailedData":{},"productKey":"xxx","gmtCreate":1613729721715,
    "deviceName":"xxx","items":{"Temperature":{"value":17,"time":1613729721715},"Humidity":{"value":20,"time":1613729721715}}}
  • Falha: Se a conexão falhar, uma mensagem de erro semelhante à seguinte será exibida.

    Utilize o log de erros para verificar seu código e as configurações de rede. Resolva o problema e execute o código novamente.

    >node iot_amqp.js
    [connection-1] disconnected Error: getaddrinfo ENOTFOUND iot-xxx.b.aliyuncs.com
        at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26) {
    errno: -3008,
    code: 'ENOTFOUND',
    syscall: 'getaddrinfo',
    hostname: 'ixxx.iyuncs.com'
    }

Referências

Para mais informações sobre códigos de erro relacionados a mensagens de assinatura no lado do servidor, consulte Códigos de erro relacionados a mensagens.