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
发布成功