mqtt

来自于:开发者立即使用

startmqtt stopmqtt publish subscribe unsubscribe 状态码

概述

MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。本模块通过startmqtt订阅,之后所有服务器过来的消息都在startmqtt的callback里呈现,其他的指令单独返回callback(一般只反馈接口是否调用成功)。所以建议在startmqtt的callback里处理服务器下发的数据.

备注

不能同时添加的模块:fog2

startmqtt

  1. 建立MQTT连接
  2. startmqtt(param, function(ret, err))

params

host:

  • 类型:字符串
  • 默认值:无
  • 描述:host,域名或者IP

port:

  • 类型:字符串
  • 默认值:无
  • 描述:端口,一般是1883

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:监听的主题

username:

  • 类型:字符串
  • 默认值:无
  • 描述:用户名

password:

  • 类型:字符串
  • 默认值:无
  • 描述:用户密码

clientid:

  • 类型:字符串
  • 默认值:无
  • 描述:客户端ID

isencrypt:

  • 类型:boolean
  • 默认值:无
  • 描述:是否SSL加密(默认为false)

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

  1. //调用成功
  2. {
  3. "message": "success",
  4. "code": 0
  5. }
  6. //连接成功
  7. {
  8. "status": "connected",
  9. "code": 4210
  10. }
  11. //收到服务器的数据
  12. {
  13. "topic": "d64f517c/c8934691813c/out/read",
  14. "payload": {"9": 3062},
  15. "code": 4200
  16. }

err:

  • 类型:JSON对象

内部字段:

  1. {
  2. code : 0,
  3. message:"Parameter is null"
  4. }

示例代码

  1. var mqtt = api.require('mqtt');
  2. var param = {
  3. host: "api.easylink.io",
  4. port: "1883",
  5. topic: "d64f517c/c8934691813c/out/read/#",
  6. username: "admin",
  7. password: "admin",
  8. clientid: "f60e5d3c-65aa-11e6-9d95-00163e103941",
  9. isencrypt: false
  10. };
  11. mqtt.startmqtt(param, function(ret, err) {
  12. if (ret)
  13. alert(JSON.stringify(ret));
  14. else
  15. alert(JSON.stringify(err));
  16. })

可用性

  1. Android系统,iOS系统
  2. 可提供的1.0.0及更高版本

stopmqtt

  1. 断开MQTT连接
  2. stopmqtt(function(ret, err))

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

  1. {
  2. "status": "stopped",
  3. "code": 4212
  4. }

err:

  • 类型:JSON对象

内部字段:

  1. {
  2. "message": "mqtt closed",
  3. "code": 4204
  4. }

示例代码

  1. mqtt.stopmqtt(function(ret, err) {
  2. if (ret)
  3. alert(JSON.stringify(ret));
  4. else
  5. alert(JSON.stringify(err));
  6. });

可用性

  1. Android系统,iOS系统
  2. 可提供的1.0.0及更高版本

publish

  1. 发送指令
  2. publish(param, function(ret, err))

params

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:发送指令的通道

command:

  • 类型:字符串
  • 默认值:无
  • 描述:指令

qos:

  • 类型:数字
  • 默认值:无
  • 描述:建议为0,QoS=0:最多一次,有可能重复或丢失;QoS=1:至少一次,有可能重复;QoS=2:只有一次,确保消息只到达一次(用于比较严格的计费系统)

retained:

  • 类型:boolean
  • 默认值:无
  • 描述:建议为false(设置是否在服务器中保存消息体)

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

  1. {
  2. "status": "publish success",
  3. "code": 4219
  4. }

err:

  • 类型:JSON对象

内部字段:

  1. {
  2. "message": "mqtt closed",
  3. "code": 4204
  4. }

示例代码

  1. var param = {
  2. topic: "d64f517c/c8934691813c/in/write/0012",
  3. command: '{"4":false}',
  4. // qos: 6,
  5. // retained: false
  6. };
  7. mqtt.publish(param, function(ret, err) {
  8. if (ret)
  9. alert(JSON.stringify(ret));
  10. else
  11. alert(JSON.stringify(err));
  12. });

可用性

  1. Android系统,iOS系统
  2. 可提供的1.0.0及更高版本

subscribe

  1. 增加订阅的通道
  2. subscribe(param, function(ret, err))

params

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:发送指令的通道

qos:

  • 类型:数字
  • 默认值:无
  • 描述:建议为0,QoS=0:最多一次,有可能重复或丢失;QoS=1:至少一次,有可能重复;QoS=2:只有一次,确保消息只到达一次(用于比较严格的计费系统)

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

  1. {
  2. "status": "subscribe success",
  3. "code": 4213
  4. }

err:

  • 类型:JSON对象

内部字段:

  1. {
  2. "message": "mqtt closed",
  3. "code": 4204
  4. }

示例代码

  1. var param = {
  2. topic: "d64f517c/c8934691813c/in/write/#",
  3. qos: 0,
  4. };
  5. mqtt.subscribe(param, function(ret, err) {
  6. if (ret)
  7. alert(JSON.stringify(ret));
  8. else
  9. alert(JSON.stringify(err));
  10. });

可用性

  1. Android系统,iOS系统
  2. 可提供的1.0.0及更高版本

unsubscribe

  1. 移除订阅的通道
  2. unsubscribe(param, function(ret, err))

params

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:发送指令的通道

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

  1. {
  2. "status": "unsubscribe success",
  3. "code": 4215
  4. }

err:

  • 类型:JSON对象

内部字段:

  1. {
  2. "message": "mqtt closed",
  3. "code": 4204
  4. }

示例代码

  1. var param = {
  2. topic: "d64f517c/c8934691813c/in/write/#"
  3. };
  4. mqtt.unsubscribe(param, function(ret, err) {
  5. if (ret)
  6. alert(JSON.stringify(ret));
  7. else
  8. alert(JSON.stringify(err));
  9. });

可用性

  1. Android系统,iOS系统
  2. 可提供的1.0.0及更高版本

状态码

状态码(code)说明(message)描述
0success请求成功
9001Parameter is null参数为空
4201invalid param各种参数错误(tag用来定位具体的参数)
4202invalid context无效的上下文
4203mqtt busyMQTT正在工作中
4204mqtt closedMQTT已经关闭
4205qos must within(0,1,2)qos必须是0、1、2之一
4206exception异常
4210connectedMQTT连接成功
4211topic missing缺少topic参数
4212stoppedMQTT断开连接成功
4213subscribe success订阅成功
4214re-subscribe success重订阅成功
4215unsubscribe success取消订阅成功
4216connect exception连接异常
4217lost连接丢失
4218disconnected未连接
4219publish success发布成功