订阅主题
等待完成订阅。
[!TIP|labelVisibility:hidden|iconVisibility:hidden] navigator.mqtt.subscribe(args)
支持平台:
- Android
- iOS
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
args | Object | 是 | 数据对象 |
args
参数为一个对象,其属性包含以下一项或多项:
topic
(String/必选) --订阅的主题名或主题筛选器qos
(NSNumber/可选) --服务质量,默认0;0:最多一次的传输;1:至少一次的传输,2: 只有一次的传输,3:待用,保留位置success
(Function/ 可选) --成功回调函数,没有返回error
(Function/ 可选) --失败回调函数,没有返回
[!WARNING]
- 单层通配符和多层通配符只能用于订阅(subscribe)消息而不能用于发布(publish)消息,层级分隔符两种情况下均可使用。
- 主题层级分隔符"/",用于分割主题层级,"/"分割后的主题,这是消息主题层级设计中很重要的符号。比方说:aaa/bbb和aaa/bbb/ccc 和aaa/bbb/ccc/ddd,这样的消息主题格式,是一个层层递进的关系,可通过多层通配符同时匹配两者,或者单层通配符只匹配一个。
- 单层通配符"+",单层通配符只能匹配一层主题。比如:aaa/+可以匹配 aaa/bbb,但是不能匹配aaa/bbb/ccc。单独的"+"号可以匹配单层的所有推送。
- 多层通配符"#",多层通配符可以匹配于多层主题。比如:aaa/# 不但可以匹配aaa/bbb,还可以匹配aaa/bbb/ccc/ddd。也就是说,多层通配符可以匹配符合通配符之前主题层级的所有子集主题。单独的#匹配所有的消息主题。
示例代码
单层通配符订阅
// 引用js
<script src='supconit://hcmobile.js'></script>
<script>
// 监听’deviceready‘事件
document.addEventListener('deviceready', onDeviceReady, false)
function onDeviceReady(){
//单层通配符订阅
navigator.mqtt.subscribe({
topic:"aiot/notice/change",
qos:0,
success:function(s){
alert("subscribe success");
},
error:function(e){
alert(JSON.stringify(e));
}
});
}
</script>
多层通配符订阅
// 引用js
<script src='supconit://hcmobile.js'></script>
<script>
// 监听’deviceready‘事件
document.addEventListener('deviceready', onDeviceReady, false)
function onDeviceReady(){
//多层通配符订阅
navigator.mqtt.subscribe({
topic:"aiot/#",
qos:0,
success:function(s){
alert("subscribe success");
},
error:function(e){
alert(JSON.stringify(e));
}
});
}
</script>