SDK提供了與云端長(zhǎng)鏈接的基礎(chǔ)能力接口,您可以直接使用這些接口完成自定義Topic相關(guān)的功能。提供的基礎(chǔ)能力包括:發(fā)布、訂閱、取消訂閱。
發(fā)布
- API原型:device#publish(topic, message, [options], [callback])
API原型說(shuō)明,具體請(qǐng)參見(jiàn)“認(rèn)證與連接”文檔中的API描述。
- 功能:向指定的topic發(fā)送一個(gè)消息。
- 參數(shù)說(shuō)明
參數(shù) 說(shuō)明 topic 指定的topic,數(shù)據(jù)類(lèi)型為String。 message 需要發(fā)送的消息,數(shù)據(jù)類(lèi)型為Buffer或者String。 options 可選值,請(qǐng)參考mqtt qos QoS level。 選值:- 0(默認(rèn)值)
- 1
- 2
callback 發(fā)布消息后的回調(diào)函數(shù),參數(shù)為error,只有發(fā)布消息失敗時(shí),才有該參數(shù)。
代碼示例:(請(qǐng)確保產(chǎn)品具有該topic,并且該topic的操作權(quán)限為“發(fā)布”。)
const iot = require('alibabacloud-iot-device-sdk');
// 創(chuàng)建iot.device對(duì)象將會(huì)發(fā)起到阿里云IoT的連接
const device = iot.device({
productKey: `${productKey}`, //將${productKey}修改為實(shí)際產(chǎn)品的ProductKey
deviceName: `${deviceName}`,//將${deviceName}修改為實(shí)際設(shè)備的DeviceName
deviceSecret: `${deviceSecret}`,//將${deviceSecret}修改為實(shí)際設(shè)備的DeviceSecret
});
//To publish a message with QoS 0
device.publish('/<productKey>/<deviceName>/user/update', 'hello world!');
//To publish a message with QoS 1
device.publish('/<productKey>/<deviceName>/user/update', 'hello world!',{qos:1});
//To publish a Buffer
device.publish('/<productKey>/<deviceName>/user/update', new Buffer([0,1,2,3,4]));
訂閱
- API原型:device#subscribe(topic/topic array/topic object, [options], [callback])
- 功能:訂閱指定topic的消息。
- 參數(shù)說(shuō)明
參數(shù) 說(shuō)明 topic 指定的topic,數(shù)據(jù)格式為String。 options 可選值。 qos QoS level,默認(rèn)值為0。 callback 收到suback時(shí)的回調(diào)函數(shù)。 error 錯(cuò)誤信息。 granted {topic, qos}的數(shù)組。
代碼示例:(請(qǐng)確保產(chǎn)品具有相應(yīng)的topic,并且topic具有“訂閱”權(quán)限。)
const iot = require('alibabacloud-iot-device-sdk');
// 創(chuàng)建iot.device對(duì)象將會(huì)發(fā)起到阿里云IoT的連接
const device = iot.device({
productKey: `${productKey}`, //將${productKey}修改為實(shí)際產(chǎn)品的ProductKey
deviceName: `${deviceName}`,//將${deviceName}修改為實(shí)際設(shè)備的DeviceName
deviceSecret: `${deviceSecret}`,//將${deviceSecret}修改為實(shí)際設(shè)備的DeviceSecret
});
//訂閱指定topic
device.subscribe('/<productKey>/<deviceName>/user/get');
//device.subscribe('/<productKey>/<deviceName>/user/get',{qos:1});
//接收到數(shù)據(jù)時(shí)將topic以及消息打印出來(lái)
device.on('message', (topic, payload) => {
console.log(topic, payload.toString());
});
參考代碼:https://github.com/aliyun/alibabacloud-iot-device-sdk/blob/master/examples/origin.js
取消訂閱
- API原型:device#unsubscribe(topic/topic array, [callback])
- 功能:取消訂閱指定topic的消息。
- 參數(shù)說(shuō)明
參數(shù) 說(shuō)明 topic 指定的topic,數(shù)據(jù)類(lèi)型為String。 callback 收到unsuback時(shí)的回調(diào)函數(shù)。
代碼示例:
const iot = require('alibabacloud-iot-device-sdk');
// 創(chuàng)建iot.device對(duì)象將會(huì)發(fā)起到阿里云IoT的連接
const device = iot.device({
productKey: `${productKey}`, //將${productKey}修改為實(shí)際產(chǎn)品的ProductKey
deviceName: `${deviceName}`,//將${deviceName}修改為實(shí)際設(shè)備的DeviceName
deviceSecret: `${deviceSecret}`,//將${deviceSecret}修改為實(shí)際設(shè)備的DeviceSecret
});
device.unsubscribe('/<productKey>/<deviceName>/user/get')