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

发布

  • API原型:device#publish(topic, message, [options], [callback])
  • 功能:向指定的topic发送一个消息。
  • 参数说明
    参数 说明
    topic 指定的topic,数据类型为String
    message 需要发送的消息,数据类型为Buffer或者String
    options 可选值。
    qos QoS level,默认值为0。
    callback 发布消息后的回调函数,参数为error,只有发布消息失败时,才有该参数。

代码示例:(请确保产品具有该topic,并且该topic的操作权限为“发布”。)

//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具有“订阅”权限。)

//订阅指定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时的回调函数。

代码示例:

device.unsubscribe('/<productKey>/<deviceName>/user/get')