mqtt
MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。本模块通过startmqtt订阅,之后所有服务器过来的消息都在startmqtt的callback里呈现,其他的指令单独返回callback(一般只反馈接口是否调用成功)。所以建议在startmqtt的callback里处理服务器下发的数据.
不能同时添加的模块:fog2
startmqtt
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},
}
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系统
stopmqtt
断开MQTT连接
stopmqtt(function(ret, err))
callback(ret,err)
ret:
- 类型:JSON对象
内部字段:
{
"status": "stopped",
"code": 4212
}
err:
- 类型:JSON对象
内部字段:
{
"message": "mqtt closed",
"code": 4204
}
可用性
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
}
示例代码
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系统
subscribe
增加订阅的通道
subscribe(param, function(ret, err))
topic:
- 类型:字符串
- 默认值:无
- 描述:发送指令的通道
qos:
- 类型:数字
- 默认值:无
- 描述:建议为0,QoS=0:最多一次,有可能重复或丢失;QoS=1:至少一次,有可能重复;QoS=2:只有一次,确保消息只到达一次(用于比较严格的计费系统)
callback(ret,err)
ret:
- 类型:JSON对象
内部字段:
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
}
- 类型: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));