MQTT

Bittly MQTT MOCK 服务通过创建一个MQTT服务器来实现消息的自动响应与发布。 通过配置消息匹配规则能够在指定主题收到消息后自动生成消息并发布到另一主题, 针对主题可配置消息自动更新规则以实现按照规则自动发布消息。

MQTT MOCK 服务

开始

如何使用 Bittly 创建一个 MQTT 临时服务器

连接配置

  • 地址 : 服务器监听地址
  • 端口 : 服务器监听端口

当连接配置完成后, 您可通过 mqtt://地址:端口 连接到MQTT服务器, 例如, 假设您的服务器地址为 127.0.0.1, 端口为 1883, 您可通过 mqtt://127.0.0.1:1883 连接到服务器。

客户端列表

客户端列表用于显示当前连接到服务器的客户端信息, 您可通过右侧断开按钮断开指定客户端连接。

主题管理

主题管理用于管理被保存以及被订阅的主题信息, 在服务启动后可通过列表查看所有主题最新消息, 并通过右侧详情按钮查看主题详情。

主题管理

在默认情况下, 主题管理列表页面仅仅显示已经保存的主题信息, 您可通过右上角的 添加 按钮添加 新的主题信息。 当服务启动后, 如果客户端执行订阅操作,则会自动添加订阅的主题信息,但不会被保存。

对于未保存的主题, 您可通过右侧的 保存 按钮保存主题信息, 保存后主题信息将会被保存到主题管理列表中。

主题详情

主题详情页面用于查看指定主题的消息信息列表, 并支持手动发布消息到指定主题。

匹配规则

匹配规则用于在收到消息后自动响应消息, 匹配规则支持多种匹配条件, 包括主题、消息内容等。 当规则匹配成功时, 将会自动指定响应内容并发布到指定主题并且不再继续匹配其他规则。

规则属性

启用

配置是否启用该规则, 当规则被禁用时, 该规则将不会被执行。

名称

规则名称, 用于标识规则。

主题

配置订阅的主题, 当从该主题收到消息时,将会尝试匹配该规则, 如果匹配成功则执行响应操作。

匹配模式

匹配模式用于指定匹配内容的匹配方式, 支持以下几种匹配模式:

  • 任意 : 匹配任意内容, 当匹配模式为任意时, 无论消息内容为何都会匹配成功。
  • 文本 : 匹配文本内容, 当匹配模式为文本时, 仅有当消息内容与匹配内容完全相同时才会匹配成功。
  • HEX : 匹配HEX内容, 当匹配模式为HEX时, 仅有当消息内容与匹配内容完全相同时才会匹配成功, 在进行匹配时, HEX 并不区分大小写, 例如 0a 0b 0c0A 0B 0C 是相同的。
  • 通配符 : 通过通配符匹配内容, 通配符支持 *? 两种通配符, * 用于匹配任意多个字符, ? 用于匹配一个字符。 例如 a*b 可以匹配 abacbadcb 等, a?b 可以匹配 aabacb 等。
  • 正则表达式 : 通过正则表达式匹配内容, 正则表达式在匹配时,会自动增加头尾限制 , 例如 a.*b 在匹配时的正则表达式为 ^a.*b$ 可以匹配以 a 开头以 b 结尾的字符串。
  • HEX 匹配 : 通过HEX表达式匹配内容, HEX正则表达式在匹配时, 例如 01 @U8 03 可以匹配 01 02 0301 05 03 等。
  • JSON : 通过JSON表达式匹配内容, JSON表达式在匹配时, 例如 $.name == "sige" 可以匹配 {"name": "sige"}
  • 表达式 : 通过表达式匹配内容, 表达式在匹配时, 例如 $value == "sige" 可以匹配 sige , 当表达式为真时匹配成功。

匹配内容

匹配内容用于指定匹配规则的匹配内容, 匹配内容根据匹配模式的不同而不同, 例如当匹配模式为文本时, 匹配内容为文本内容, 当匹配模式为HEX时, 匹配内容为HEX内容。

在编辑匹配内容时, 您可通过 {{}} 来引用上下文, 例如 {{$var('变量001')}} 可以引用变量 变量001 的值, 使用 {{ customFunction("hi") }} 可以调用自定义函数 customFunction 并传入参数 hi

响应主题

响应主题用于指定响应消息的主题, 当规则匹配成功时, 将会自动发布响应消息到指定主题。

响应模式

  • 文本 : 以文本方式发布响应消息。
  • ECHO : 以ECHO方式发布响应消息, 即原样返回。
  • HEX : 以HEX方式发布响应消息, 例如 01 AA 03
  • JSON : 以JSON方式发布响应消息, 例如 {"name": "sige"}
  • 结构体 : 以结构体方式发布响应消息。 暂时不支持。
  • 表达式 : 以表达式方式发布响应消息。 以表达式返回值为响应消息。

响应内容

响应内容用于指定响应消息的内容, 响应内容根据响应模式的不同而不同, 例如当响应模式为文本时, 响应内容为文本内容,

变量

配置 MQTT MOCK 服务运行时的变量, 变量可以用于在脚本中存储一些状态信息, 例如计数器、状态等。

变量可用于在脚本以及模板中, 例如匹配条件, 响应内容等。

脚本

脚本

Bittly 的 MQTT Mock 服务支持通过脚本来改变执行流程以及自定义响应内容。 脚本采用 JavaScript 语法, 在服务执行时, Bittly 会将脚本编译为 Javascript Module 并在适当的实际执行对应的函数。

脚本函数可以分为两种类型, 一种是生命周期函数,例如 init 等, 另一种是由用户自定义的函数, 可用于在响应模板以及匹配条件中调用。

生命周期函数

init()

初始化函数, 用于初始化脚本环境, 仅在服务启动时执行一次, 如果该函数执行失败,则服务启动失败。

例如

export async function init() {
    $this.variableSet('counter', 0);
}

内置函数

$this.variableGet(name)

获取当前变量值, 例如 $this.variableGet('counter')。 当变量不存在时将会抛出异常。

请求参数

  • name : 变量名称。

返回值: 变量值

例如:

export async function init() {
    // 获取变量值
    let counter = $this.variableGet('counter');
    console.log('Counter:', counter);
}

$this.variableSet(name, value)

设置当前变量值, 当变量不存在时将会抛出异常。

请求参数

  • name : 变量名称。
  • value : 变量值。

返回值: 无

例如:

export async function init() {
    // 设置变量值
    $this.variableSet('counter', 1);
}
2024 © Bittly 沪ICP备2023006101号-2