SDK提供了与云端长链接的基础能力接口,您可以直接使用这些接口完成自定义Topic相关的功能。提供的基础能力包括:发布、订阅、取消订阅。

发布

  • API原型:device#publish(topic, message, [options], [callback])

    API原型说明,具体请参见“认证与连接”文档中的API描述

  • 功能:向指定的topic发送一个消息。
  • 参数说明
    参数说明
    topic指定的topic,数据类型为String
    message需要发送的消息,数据类型为Buffer或者String
    options可选值,请参考mqtt
    qosQoS 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可选值。
    qosQoS 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')