zoukankan      html  css  js  c++  java
  • Mqtt 客户端多主题订阅

    前言: mqtt 的主题一个层级的概念. 我们订阅多个主题就需要用到这个技术点
    功能是在主题中引入层次。层次又分主题层级分隔符,多层通配符和单层通配符
    需要注意的一点是: 这些层级不能用在发布消息的 Publish 接口中

    • 层级分类
      • 主题层级分隔符: /
      • 多层通配符: #
      • 单层通配符: +

    主题层级分隔符

    "/" 被用来分割主题树的每一层,并给主题空间提供分等级的结构。当两个通配符在一个主题中出现的时候,主题层次分隔符的使用是很重要的。

    // 主题Topic1: 分了三层
    /test/child/aaa
    // 主题Topic2: 分了四层
    /test/child/aaa2/bbb2
    

    多层通配符

    多层通配符"#"是一个匹配主题中任意层次数的通配符。我们用案例说明

    案例1
    订阅主题: /test/child/#
    我们将收到这些主题发送来的消息:

    /test/child 
    /test/child/aaa
    /test/child/ccc
    /test/child/aaa/bbb
    /test/child/aaa/bbb/ddd
    

    多层通配符可以理解为大于等于0的层次。
    多层通配符只可以确定当前层或者下一层

    常见错误 和正确表示案例

    #   // Success, 会接收到不以 / 开头的所有主题
    /#  // Success
    /test/#/child   // Error, #必须是最后一个字符
    /test/#           // Success
    /test/child#    //Error  无效的通配符
    /test/child/#   // Success
    

    单层通配符

    单层通配符 "+" 只匹配主题的一层

    案例1
    订阅主题: /test/child/+
    我们将收到这些主题发送来的消息:
    注意:接收不到 /test/child 主题发送的消息

    /test/child/aaa
    /test/child/bbb
    /test/child/ccc
    

    常见错误 和正确表示案例

    +  //Success
    /+  // Success
    /test/+/child   // Success, 
    /test/+           // Success
    /test/child+    //Error  无效的通配符
    /test/child/+   // Success
    

    主题语法和用法

    当你建立一个应用,设计主题树的时候应该考虑以下的主题名字的语法和语义:

    • 主题至少有一个字符长。
    • 主题名字是大小写敏感的。比如说,ACCOUNTS和Accounts是两个不同的主题。
    • 主题名字可以包含空格。比如,Accounts payable是一个有效的主题。
    • 以/开头会产生一个不同的主题。比如说,/finnace与finance不同。/finance匹配"+/+"和/+,但不匹配+
    • 不要在任何主题中包含null(Unicode x0000)字符。

    以下的原则应用于主题树的建造和内容

    • 在主题树中,长度被限制于64k内但是在这以内没有限制层级的数目 。
    • 可以有任意数目的根节点;也就是说,可以有任意数目的主题树
  • 相关阅读:
    安卓笔记20170117
    android笔记20170116
    meta 标签的作用
    SASS 初学者入门
    JQuery selector
    浅谈js回调函数
    自己写的jquery 弹框插件
    魔兽种子
    html页面的CSS、DIV命名规则
    各种弹框素材的链接
  • 原文地址:https://www.cnblogs.com/shuiche/p/12630606.html
Copyright © 2011-2022 走看看