全部产品
云市场

基于MQTT Topic通信

更新时间:2019-06-25 09:45:26

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

数据上报

API原型 device#publish(topic, message, [options], [callback])
功能描述 向指定的topic发送一个消息
参数描述
- topic (String):topic值
- message :需要发送的消息, 数据格式为 Buffer or String
- options:
- qos QoS level, 默认值为 0
- callback - function (err), fired when the QoS handling completes, or at the next tick if QoS 0. An error occurs if client is disconnecting.

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

  1. //To publish a message with QoS 0
  2. device.publish('/<productKey>/<deviceName>/user/update', 'hello world!');
  3. //To publish a message with QoS 1
  4. device.publish('/<productKey>/<deviceName>/user/update', 'hello world!',{qos:1});
  5. //To publish a Buffer
  6. 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(string):某个topic的值,或者指向一个topic数组
- options:
- qos QoS level, 默认值为 0
- callback - function (err,granted):收到suback时调用,其中
- err:error描述
- granted:是{topic, qos}的数组

代码示例:(请确保产品具有相应的topic,并且topic具有“订阅”权限)

  1. //订阅指定topic
  2. device.subscribe('/<productKey>/<deviceName>/user/get');
  3. //device.subscribe('/<productKey>/<deviceName>/user/get',{qos:1});
  4. //接收到数据时将topic以及消息打印出来
  5. device.on('message', (topic, payload) => {
  6. console.log(topic, payload.toString());
  7. });

参考代码:https://github.com/aliyun/alibabacloud-iot-device-sdk/blob/master/examples/origin.js

取消消息订阅

API原型 device#unsubscribe(topic/topic array, [callback])
功能描述 订阅指定topic的消息
参数描述
- topic(string):某个topic的值,或者指向一个topic数组
- callback - function (err):收到unsuback时调用

代码示例:

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