mqtt

来自于:开发者立即使用

概述

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

备注

不能同时添加的模块:fog2

startmqtt

建立MQTT连接

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对象

内部字段:

//调用成功
{
  "message": "success",
  "code": 0
}

//连接成功
{
  "status": "connected",
  "code": 4210
}

//收到服务器的数据
{
  "topic": "d64f517c/c8934691813c/out/read",
  "payload": {"9": 3062},
  "code": 4200
}

err:

  • 类型:JSON对象

内部字段:

{
    code : 0,
    message:"Parameter is null"
}

示例代码

var mqtt = api.require('mqtt');
var param = {
    host: "api.easylink.io",
    port: "1883",
    topic: "d64f517c/c8934691813c/out/read/#",
    username: "admin",
    password: "admin",
    clientid: "f60e5d3c-65aa-11e6-9d95-00163e103941",
    isencrypt: false
};
mqtt.startmqtt(param, function(ret, err) {
    if (ret)
        alert(JSON.stringify(ret));
    else
        alert(JSON.stringify(err));
})

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

stopmqtt

断开MQTT连接

stopmqtt(function(ret, err))

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "stopped",
  "code": 4212
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

mqtt.stopmqtt(function(ret, err) {
    if (ret)
        alert(JSON.stringify(ret));
    else
        alert(JSON.stringify(err));
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

publish

发送指令

publish(param, function(ret, err))

params

topic:

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

command:

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

qos:

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

retained:

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

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "publish success",
  "code": 4219
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

var param = {
    topic: "d64f517c/c8934691813c/in/write/0012",
    command: '{"4":false}',
    // qos: 6,
    // retained: false
};
mqtt.publish(param, function(ret, err) {
    if (ret)
        alert(JSON.stringify(ret));
    else
        alert(JSON.stringify(err));
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

subscribe

增加订阅的通道

subscribe(param, function(ret, err))

params

topic:

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

qos:

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

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "subscribe success",
  "code": 4213
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

var param = {
    topic: "d64f517c/c8934691813c/in/write/#",
    qos: 0,
};
mqtt.subscribe(param, function(ret, err) {
    if (ret)
        alert(JSON.stringify(ret));
    else
        alert(JSON.stringify(err));
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本    

unsubscribe

移除订阅的通道

unsubscribe(param, function(ret, err))

params

topic:

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

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "unsubscribe success",
  "code": 4215
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

var param = {
    topic: "d64f517c/c8934691813c/in/write/#"
};
mqtt.unsubscribe(param, function(ret, err) {
    if (ret)
        alert(JSON.stringify(ret));
    else
        alert(JSON.stringify(err));
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本    

状态码

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