Topik ini menjelaskan cara menggunakan SDK untuk Node.js guna menghubungkan klien Advanced Message Queuing Protocol (AMQP) ke Alibaba Cloud IoT Platform dan menerima pesan dari IoT Platform melalui fitur langganan sisi server.
Prasyarat
ID grup konsumen yang berlangganan pesan dari topik telah diperoleh.
Anda dapat menggunakan grup konsumen default bernama DEFAULT_GROUP atau membuat grup konsumen di konsol IoT Platform. Untuk informasi lebih lanjut, lihat Mengelola Grup Konsumen.
Anda dapat menggunakan grup konsumen untuk berlangganan pesan dari topik. Untuk informasi lebih lanjut, lihat Mengonfigurasi Langganan Sisi Server AMQP.
Lingkungan pengembangan
Gunakan Node.js versi 8.0.0 atau yang lebih baru.
Unduh dan instal SDK
Kami merekomendasikan penggunaan pustaka rhea. Untuk mengunduh pustaka dan melihat petunjuknya, kunjungi rhea.
Dalam contoh ini, perintah npm install rhea digunakan untuk mengunduh pustaka rhea.
Prosedur
Unduh dan instal Node.js pada sistem operasi Windows atau Linux. Dalam contoh ini, digunakan Windows 10 (64-bit). Unduh paket instalasi node-v14.15.1-x64.msi.
Buka jendela Command Prompt dan jalankan perintah berikut untuk memeriksa versi Node.js:
node --versionJika instalasi berhasil, nomor versi berikut akan ditampilkan:
v14.15.1Buat file JavaScript seperti amqp.js di komputer Anda untuk menyimpan kode contoh Node.js.
Anda dapat mengonfigurasi parameter dalam kode contoh sesuai dengan deskripsi parameter dalam tabel berikut.
PentingPastikan Anda menentukan nilai parameter yang valid. Jika tidak, klien AMQP gagal terhubung ke IoT Platform.
const container = require('rhea'); const crypto = require('crypto'); // Jika Anda melakukan hard-code pasangan AccessKey dalam kode proyek, pasangan AccessKey tersebut mungkin terungkap jika kode proyek bocor. Dalam hal ini, sumber daya dalam akun Anda menjadi tidak aman. Contoh kode berikut memberikan contoh tentang cara memperoleh pasangan AccessKey dari variabel lingkungan. Contoh ini hanya untuk referensi. 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 lebih lanjut, lihat topik "Menghubungkan klien AMQP ke IoT Platform". 'host': '${YourHost}', 'port': 5671, 'transport':'tls', 'reconnect':true, 'idle_time_out':60000, // Struktur parameter userName. Untuk informasi lebih lanjut, lihat topik "Menghubungkan klien AMQP ke IoT Platform". 'username':'${YourClientId}|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=' + accessKey + ',iotInstanceId=${YourIotInstanceId},consumerGroupId=${YourConsumerGroupId}|', // Hitung tanda tangan. Untuk informasi lebih lanjut tentang cara membuat password, lihat topik "Menghubungkan klien AMQP ke IoT Platform". 'password': hmacSha1(accessSecret, 'authId='+ accessKey +'×tamp=1573489088171'), }); // Buat tautan penerima. var receiver = connection.open_receiver(); // Fungsi callback yang dipanggil ketika pesan diterima dari IoT Platform. 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(); // Kembalikan isi pesan. console.log(content); // Kirim pesan ACK. Jangan implementasikan logika yang memakan waktu dalam fungsi callback. context.delivery.accept(); }); // Hitung tanda tangan 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 yang digunakan oleh klien AMQP untuk terhubung ke IoT Platform.
Untuk informasi lebih lanjut tentang titik akhir yang dapat Anda tentukan untuk variabel
${YourHost}, lihat Kelola titik akhir instance.username
'test |authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=LTAI****************,iotInstanceId=,consumerGroupId=DEFAULT_GROUP|'
Informasi autentikasi yang diperlukan untuk terhubung ke IoT Platform. Deskripsi:
${YourClientId}: Ganti variabel ini dengan ID klien Anda. Anda dapat menentukan ID klien kustom berdasarkan kebutuhan bisnis Anda. ID klien tidak boleh melebihi 64 karakter. Kami merekomendasikan Anda menggunakan pengenal unik sebagai ID klien, seperti UUID, alamat MAC, atau alamat IP server tempat klien berjalan.Setelah klien AMQP terhubung ke IoT Platform dan dimulai, lakukan langkah-langkah berikut untuk melihat detail klien: Masuk ke konsol IoT Platform dan klik kartu instance yang ingin Anda kelola. Di panel navigasi di sebelah kiri, pilih . Pada tab Consumer Groups, temukan grup konsumen yang ingin Anda kelola dan klik View di kolom Tindakan. ID setiap klien ditampilkan pada tab Status Grup Konsumen. Anda dapat menggunakan ID klien untuk mengidentifikasi klien dengan mudah.
${YourAccessKeyId}dan${YourAccessKeySecret}: Ganti variabel dengan ID AccessKey dan Rahasia AccessKey Anda.Masuk ke konsol IoT Platform, arahkan penunjuk ke foto profil di sudut kanan atas, lalu klik AccessKey Management untuk mendapatkan ID AccessKey dan Rahasia AccessKey.
CatatanJika Anda menggunakan Pengguna Resource Access Management (RAM), Anda harus melampirkan kebijakan AliyunIOTFullAccess ke pengguna RAM. Kebijakan ini memungkinkan pengguna RAM mengelola sumber daya IoT Platform. Jika tidak, koneksi ke IoT Platform gagal. Untuk informasi lebih lanjut, lihat Akses IoT Platform sebagai pengguna RAM.
${YourIotInstanceId}: Ganti variabel ini dengan ID instance Anda.Masuk ke konsol IoT Platform. Pada tab Overview, lihat ID instance.
PentingJika tab Overview tidak ditampilkan atau instance Anda tidak memiliki ID, hapus variabel ${YourIotInstanceId}.
${YourConsumerGroupId}: Ganti variabel ini dengan ID grup konsumen Anda.Untuk melihat ID grup konsumen, lakukan langkah-langkah berikut: Masuk ke konsol IoT Platform dan klik kartu instance yang ingin Anda kelola. Di panel navigasi di sebelah kiri, pilih . ID ditampilkan pada tab Consumer Groups.
password
hmacSha1('yourAccessKeySecret'*,'authId=LTAI****************×tamp=1573489088171')
Buka Command Prompt dan jalankan perintah cd untuk masuk ke direktori tempat file amqp.js disimpan. Kemudian, jalankan perintah npm untuk mengunduh pustaka rhea. Gambar berikut menunjukkan struktur direktori setelah pustaka diunduh.
npm install rhea
Jalankan perintah berikut di Command Prompt untuk menjalankan file amqp.js. Dengan cara ini, klien AMQP dimulai.
node amqp.js
Hasil contoh
Jika informasi serupa dengan output berikut ditampilkan, klien AMQP berhasil terhubung ke IoT Platform dan dapat menerima pesan.

Jika informasi serupa dengan output berikut ditampilkan, klien AMQP gagal terhubung ke IoT Platform.
Periksa kode atau lingkungan jaringan berdasarkan log, perbaiki masalah, lalu jalankan kode lagi.

Referensi
Untuk informasi lebih lanjut tentang kode kesalahan yang terkait dengan fitur langganan sisi server, lihat bagian Kode Kesalahan Terkait Pesan dari topik "Log IoT Platform".