All Products
Search
Document Center

IoT Platform:Contoh koneksi SDK Node.js

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara menggunakan SDK AMQP untuk Node.js guna terhubung ke Alibaba Cloud IoT Platform dan menerima pesan melalui langganan sisi server.

Prasyarat

Anda telah memperoleh ID kelompok konsumen dan berlangganan ke pesan topik yang diperlukan.

Siapkan lingkungan pengembangan

Diperlukan Node.js versi 8.0.0 atau lebih baru.

Unduh dan instal SDK

Untuk SDK AMQP Node.js, kami merekomendasikan penggunaan pustaka rhea. Kunjungi rhea untuk mengunduh pustaka tersebut dan meninjau dokumentasinya.

Contoh ini menggunakan perintah npm install rhea untuk menginstal pustaka rhea.

Prosedur

  1. Pada sistem Windows atau Linux, unduh dan instal Node.js. Topik ini menggunakan sistem Windows 10 (64-bit) dan paket instalasi node-v14.15.1-x64.msi sebagai contoh.

  2. Setelah instalasi, buka command-line interface dan jalankan perintah berikut untuk memeriksa versi Node.js.

    node --version

    Instalasi yang berhasil akan menampilkan nomor versi:

    v14.15.1
  3. Buat file JavaScript, misalnya amqp.js, untuk menyimpan kode contoh.

    Modifikasi parameter sesuai dengan tabel di bawah ini.

    Penting

    Tentukan nilai parameter yang valid. Jika tidak, client AMQP gagal terhubung ke Platform IoT.

    const container = require('rhea');
    const crypto = require('crypto');
    // Mengekspos Pasangan Kunci Akses Anda dapat membahayakan keamanan akun Anda. 
    // Kode ini mengambil Pasangan Kunci Akses dari Variabel lingkungan hanya untuk tujuan demonstrasi.
    var accessKey = process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'];
    var accessSecret = process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'];
    // Buat koneksi.
    var connection = container.connect({
        // Titik akhir. Untuk informasi selengkapnya, lihat dokumentasi tentang cara menghubungkan client AMQP.
        'host': '${YourHost}',
        'port': 5671,
        'transport':'tls',
        'reconnect':true,
        'idle_time_out':60000,
        // Format username. Untuk informasi selengkapnya, lihat dokumentasi tentang cara menghubungkan client AMQP.
        'username':'${YourClientId}|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=' + accessKey + ',iotInstanceId=${YourIotInstanceId},consumerGroupId=${YourConsumerGroupId}|', 
        // Hitung signature. Untuk informasi selengkapnya tentang format password, lihat dokumentasi tentang cara menghubungkan client AMQP.
        'password': hmacSha1(accessSecret, 'authId='+ accessKey +'&timestamp=1573489088171'),
    });
    // Buat tautan receiver.
    var receiver = connection.open_receiver();
    // Fungsi callback untuk menerima pesan yang didorong dari 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();
        // Tampilkan konten.
        console.log(content);
        // Kirim ACK. Jangan sertakan operasi yang memakan waktu dalam fungsi callback.
        context.delivery.accept();
    });
    // Hitung signature password.
    function hmacSha1(key, context) {
        return Buffer.from(crypto.createHmac('sha1', key).update(context).digest())
            .toString('base64');
    }

    Parameter

    Contoh

    Deskripsi

    host

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

    Titik akhir AMQP.

    Untuk titik akhir AMQP (${YourHost}), lihat Lihat dan konfigurasi titik akhir instans.

    username

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

    Kredensial otentikasi untuk terhubung ke Platform IoT. String ini berisi parameter berikut:

    • ${YourClientId}: Ganti dengan ID klien Anda. Anda dapat menentukan ID kustom hingga panjang 64 karakter. Kami merekomendasikan penggunaan pengenal unik, seperti UUID, alamat MAC, atau alamat IP server tempat client AMQP Anda berjalan.

      Setelah client AMQP terhubung, Anda dapat melihat parameter ini di Konsol Platform IoT. Di konsol instans Anda, buka Message Forwarding > Server-side Subscription > Consumer Groups. Pada tab tersebut, klik View di sebelah kelompok konsumen Anda. Halaman Consumer Group Details menampilkan ID klien untuk membantu Anda membedakan antar klien.

    • ${YourAccessKeyId} dan ${YourAccessKeySecret}: Ganti dengan ID AccessKey dan AccessKey Secret Anda.

      Untuk memperolehnya, masuk ke Konsol Platform IoT, arahkan penunjuk mouse ke foto profil Anda di pojok kanan atas, lalu klik AccessKey Management.

      Catatan

      Jika Anda menggunakan RAM user, Anda harus menyambungkan kebijakan AliyunIOTFullAccess ke RAM user tersebut. Jika tidak, koneksi akan gagal. Untuk informasi selengkapnya, lihat Akses RAM user.

    • ${YourIotInstanceId}: Ganti dengan ID instans Anda.

      Masuk ke Konsol Platform IoT. Anda dapat menemukan ID instans pada tab Overview instans Anda.

      Penting

      Jika tab Overview tidak tersedia atau instans Anda tidak memiliki ID, hapus parameter iotInstanceId=${YourIotInstanceId} dari string username.

    • ${YourConsumerGroupId}: Ganti dengan ID kelompok konsumen Anda.

      Untuk menemukan ID kelompok konsumen Anda, masuk ke Konsol Platform IoT. Di konsol instans Anda, buka Message Forwarding > Server-side Subscription > Consumer Groups.

    password

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

  4. Buka command-line interface, arahkan ke direktori yang berisi file amqp.js Anda, lalu jalankan perintah berikut untuk menginstal pustaka rhea:

    npm install rhea

    Setelah perintah selesai, direktori root proyek Anda berisi folder node_modules, file amqp.js, dan file package-lock.json.

  5. Di jendela CMD, masukkan perintah berikut untuk menjalankan kode amqp.js dan memulai server client AMQP.

    node amqp.js

Hasil contoh

  • Berhasil: Jika koneksi berhasil, klien mulai menerima pesan dan mencatat output seperti berikut. Contoh ini menampilkan data suhu dan kelembapan yang dilaporkan oleh perangkat.

    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}}}
  • Gagal: Jika koneksi gagal, muncul pesan kesalahan seperti berikut.

    Gunakan log kesalahan untuk memeriksa kode dan pengaturan jaringan Anda. Perbaiki masalah tersebut, lalu jalankan kembali kode.

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

Referensi

Untuk informasi selengkapnya tentang kode kesalahan pesan langganan sisi server, lihat Kode kesalahan terkait pesan.