SDK提供了与云端长链接的基础能力接口,您可以直接使用这些接口完成自定义Topic相关的功能。提供的基础能力包括:发布、订阅、取消订阅。
发布
- API原型:device#publish(topic, message, [options], [callback])
API原型说明,具体请参见“认证与连接”文档中的API描述。
- 功能:向指定的topic发送一个消息。
- 参数说明
参数 说明 topic 指定的topic,数据类型为String。 message 需要发送的消息,数据类型为Buffer或者String。 options 可选值,请参考mqtt qos QoS level。 选值:- 0(默认值)
- 1
- 2
callback 发布消息后的回调函数,参数为error,只有发布消息失败时,才有该参数。
代码示例:(请确保产品具有该topic,并且该topic的操作权限为“发布”。)
const iot = require('alibabacloud-iot-device-sdk');
// 创建iot.device对象将会发起到阿里云IoT的连接
const device = iot.device({
productKey: `${productKey}`, //将${productKey}修改为实际产品的ProductKey
deviceName: `${deviceName}`,//将${deviceName}修改为实际设备的DeviceName
deviceSecret: `${deviceSecret}`,//将${deviceSecret}修改为实际设备的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的消息。
- 参数说明
参数 说明 topic 指定的topic,数据格式为String。 options 可选值。 qos QoS level,默认值为0。 callback 收到suback时的回调函数。 error 错误信息。 granted {topic, qos}的数组。
代码示例:(请确保产品具有相应的topic,并且topic具有“订阅”权限。)
const iot = require('alibabacloud-iot-device-sdk');
// 创建iot.device对象将会发起到阿里云IoT的连接
const device = iot.device({
productKey: `${productKey}`, //将${productKey}修改为实际产品的ProductKey
deviceName: `${deviceName}`,//将${deviceName}修改为实际设备的DeviceName
deviceSecret: `${deviceSecret}`,//将${deviceSecret}修改为实际设备的DeviceSecret
});
//订阅指定topic
device.subscribe('/<productKey>/<deviceName>/user/get');
//device.subscribe('/<productKey>/<deviceName>/user/get',{qos:1});
//接收到数据时将topic以及消息打印出来
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的消息。
- 参数说明
参数 说明 topic 指定的topic,数据类型为String。 callback 收到unsuback时的回调函数。
代码示例:
const iot = require('alibabacloud-iot-device-sdk');
// 创建iot.device对象将会发起到阿里云IoT的连接
const device = iot.device({
productKey: `${productKey}`, //将${productKey}修改为实际产品的ProductKey
deviceName: `${deviceName}`,//将${deviceName}修改为实际设备的DeviceName
deviceSecret: `${deviceSecret}`,//将${deviceSecret}修改为实际设备的DeviceSecret
});
device.unsubscribe('/<productKey>/<deviceName>/user/get')