订阅主题

等待完成订阅。

[!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>

results matching ""

    No results matching ""