mqtt
来自于:开发者立即使用
startmqtt stopmqtt publish subscribe unsubscribe 状态码
概述
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 | 发布成功 |