Tous les produits
Search
Centre de documentation

IoT Platform:Exemple de connexion avec le SDK Node.js

Dernière mise à jour :Aug 09, 2026

Cette rubrique explique comment utiliser le SDK AMQP pour Node.js afin de se connecter à Alibaba Cloud IoT Platform et de recevoir des messages via un abonnement côté serveur.

Prérequis

Vous avez obtenu l'ID d'un groupe de consommateurs et vous êtes abonné aux messages des topics requis.

Configurer l'environnement de développement

Node.js version 8.0.0 ou ultérieure est requis.

Télécharger et installer le SDK

Pour le SDK AMQP Node.js, nous recommandons la bibliothèque rhea. Consultez rhea pour télécharger la bibliothèque et consulter sa documentation.

Cet exemple utilise la commande npm install rhea pour installer la bibliothèque rhea.

Procédure

  1. Sur un système Windows ou Linux, téléchargez et installez Node.js. Cette rubrique prend pour exemple un système Windows 10 (64 bits) et le package d'installation node-v14.15.1-x64.msi.

  2. Une fois l'installation terminée, ouvrez une interface de ligne de commande et exécutez la commande suivante pour vérifier la version de Node.js.

    node --version

    Une installation réussie renvoie le numéro de version :

    v14.15.1
  3. Créez un fichier JavaScript, par exemple amqp.js, pour y placer l'exemple de code.

    Modifiez les paramètres comme indiqué dans le tableau ci-dessous.

    Important

    Spécifiez des valeurs de paramètres valides. Sinon, le client AMQP ne pourra pas se connecter à 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');
    }

    Paramètre

    Exemple

    Description

    host

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

    Le endpoint AMQP.

    Pour le endpoint AMQP (${YourHost}), consultez Afficher et configurer les endpoints d'instance.

    username

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

    Les informations d'authentification pour la connexion à IoT Platform. Cette chaîne contient les paramètres suivants :

    • ${YourClientId} : remplacez par votre ID client. Vous pouvez définir un ID personnalisé d'une longueur maximale de 64 caractères. Nous vous recommandons d'utiliser un identifiant unique, tel que l'UUID, l'adresse MAC ou l'adresse IP du serveur qui exécute votre client AMQP.

      Une fois le client AMQP connecté, vous pouvez afficher ce paramètre dans la console IoT Platform. Dans la console de votre instance, accédez à Message Forwarding > Server-side Subscription > Consumer Groups. Dans l'onglet, cliquez sur View à côté de votre groupe de consommateurs. La page Consumer Group Details affiche l'ID client pour vous aider à distinguer les clients.

    • ${YourAccessKeyId} et ${YourAccessKeySecret} : remplacez par votre AccessKey ID et votre AccessKey Secret.

      Pour les obtenir, connectez-vous à la console IoT Platform, placez le pointeur sur votre photo de profil dans le coin supérieur droit, puis cliquez sur AccessKey Management.

      Remarque

      Si vous utilisez un utilisateur RAM, vous devez joindre la politique AliyunIOTFullAccess à l'utilisateur RAM. Sinon, la connexion échouera. Pour plus d'informations, consultez Accès utilisateur RAM.

    • ${YourIotInstanceId} : remplacez par l'ID de votre instance.

      Connectez-vous à la console IoT Platform. Vous pouvez trouver l'ID de l'instance dans l'onglet Overview de votre instance.

      Important

      Si l'onglet Overview n'est pas disponible ou si votre instance ne possède pas d'ID, supprimez le paramètre iotInstanceId=${YourIotInstanceId} de la chaîne username.

    • ${YourConsumerGroupId} : remplacez par l'ID de votre groupe de consommateurs.

      Pour trouver l'ID de votre groupe de consommateurs, connectez-vous à la console IoT Platform. Dans la console de votre instance, accédez à Message Forwarding > Server-side Subscription > Consumer Groups.

    password

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

  4. Ouvrez une interface de ligne de commande, accédez au répertoire contenant votre fichier amqp.js et exécutez la commande suivante pour installer la bibliothèque rhea :

    npm install rhea

    Une fois la commande terminée, le répertoire racine de votre projet contient un dossier node_modules, votre fichier amqp.js et un fichier package-lock.json.

  5. Dans la fenêtre CMD, saisissez la commande suivante pour exécuter le code amqp.js et démarrer le serveur client AMQP.

    node amqp.js

Résultats de l'exemple

  • Succès : En cas de connexion réussie, le client commence à recevoir des messages et consigne une sortie similaire à celle ci-dessous. Cet exemple montre des données de température et d'humidité rapportées par un appareil.

    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}}}
  • Échec : Si la connexion échoue, un message d'erreur similaire à celui ci-dessous s'affiche.

    Utilisez le journal des erreurs pour vérifier votre code et vos paramètres réseau. Résolvez le problème et exécutez à nouveau le code.

    >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'
    }

Références

Pour plus d'informations sur les codes d'erreur des messages d'abonnement côté serveur, consultez Codes d'erreur liés aux messages.