跨平台MQTT客户端工具-MQTTX
2021-12-18 09:37:01 阿炯

MQTT X 是 EMQ 开源的一款跨平台 MQTT 5.0 客户端工具,它支持 macOS, Linux, Windows,并且支持 MQTT 消息格式转换。


MQTT X 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建连接保存并同时建立多个连接客户端,方便用户快速测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他特性。采用TypeScript开发并在ApacheV2.0协议下授权使用。


MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,旨在用于受限设备和低带宽,高延迟或不可靠的网络,由 IBM 发布。

使用

详细使用,请查看博客使用手册

MQTT Broker 准备
如果不需要本地部署的 MQTT Broker,那么可以使用 EMQ X 的线上公开版进行快速测试;
Broker 地址: broker.emqx.io
Broker TCP 端口: 1883
Broker SSL 端口: 8883

如果打算部署一个本地运行的 MQTT Broker,那么推荐下载 EMQ X 进行安装使用。EMQ X 是一款完全开源,高度可伸缩,高可用的百万级分布式 MQTT 消息服务器,是 5G 时代万物互联的消息引擎,支持 MQTT/CoAP/LwM2M 一站式 IoT 协议接入。

连接配置。点击左侧菜单栏里的 + 号按钮,并填写表单中相应的必填项。连接信息配置完成后,点击右上角的 Connect 按钮就可以创建一个连接并连接至 MQTT Broker。MQTT 连接成功后,就可以进行 MQTT 的发布与订阅测试。



最新版本:1.7
2021年12月中旬,EMQ 正式发布了 MQTT X v1.7.0。从这一版本起,MQTT X 将进一步支持 MQTT 5.0 的诸多新特性,这也是全球目前为止对 MQTT 5.0 支持最为完整的桌面测试客户端工具。

更全面的 MQTT 5.0 支持

在 1.7.0 版本中,MQTT X 新增很多关于 MQTT 5.0 的属性配置功能支持,使其成为目前同类工具中支持 MQTT 5.0 最为完整的 MQTT 桌面客户端工具。要想对 MQTT 5.0 的特性进行使用和测试,需要 MQTT X v1.7.0 与支持 MQTT 5.0 的 MQTT Broker 配合使用。云原生分布式 MQTT 消息服务器 EMQ X 从 3.0 版本开始支持 MQTT 5.0 协议,是开源社区中第一个支持该协议规范的消息服务器,并且完全兼容 MQTT 3.1 和 3.1.1 协议。使用 MQTT X 连接到 EMQ X,就可以快速使用和测试 MQTT 5.0 的功能特性。

支持 MQTT 5.0 用户属性配置:新版本中我们首先支持了用户属性的配置。用户属性是 MQTT 5.0 中一个非常实用的特性,它是一种自定义属性,允许用户向 MQTT 消息添加自己的元数据,传输额外的自定义信息以扩充更多应用场景。如果熟悉 HTTP 协议的话,该功能与 HTTP 的 Header 的概念非常类似。可以在创建客户端连接和发布消息时进行用户属性的配置。

扩展 MQTT 5.0 其他属性配置:除可配置用户属性外,1.7.0 版本还扩展了客户端连接和消息发布时的其他属性配置。发送消息时,支持配置 Content Type,指定 Payload Format Indicator,用来描述应用消息的内容的格式,并指定消息内容是 UTF-8 编码的字符串。支持主题别名的属性配置,可以有效节省带宽资源和计算资源。支持 MQTT 5.0 中的请求响应,提供 Response Topic 和 Correlation Data,用以控制响应消息被路由回请求的发布者。

支持 MQTT 5.0 订阅选项:该版本中我们还对订阅选项进行了支持。支持了对 No Local flag、Retain as Published flag 和 Retain Handling 的设置,测试时,你可以使用这些订阅选项来改变服务端的行为。在后续版本中我们还将继续支持订阅标识符等 MQTT 5.0 中的新特性。

更顺畅的使用体验

一键多主题订阅:在之前的版本中,我们每次打开订阅主题的弹框只能订阅一个主题,对于想要订阅多个主题的用户来说,每次都需要点击打开和关闭才能订阅多个主题,不是很方便。因此在新版本我们进行了优化,支持一次订阅多个主题,减少用户的重复操作。

禁止消息自动滚动:v1.7.0 设置中新增了对接收和发布消息时消息列表自动滚动的控制。自动滚动功能适用于当消息接收速率较慢时,可以帮助用户查看到最新消息。当接收消息的速率过快时,用户可以点击关闭该功能,以查看一些发送或接收到的旧消息。

注:当关闭自动滚动功能后,可以提升部分发送和接受消息时的性能。

主题跟随操作系统主题变化(仅支持 macOS):MQTT X 目前支持 Light、Dark 和 Night 三种主题模式,之前需要手动切换,新版本对此进行了优化。当操作系统的系统主题进行变化时,MQTT X 可以自动切换主题。当 macOS 系统主题是 Dark Mode 时,MQTT X 将自动切换到 Night 主题。

国际化扩展:借助来自社区的力量, MQTT X 的国际化扩展更进一步。除支持简体中文、英文、日文和土耳其文外,在一位匈牙利贡献者的帮助下,在 1.7.0 版本中实现了匈牙利语支持。欢迎更多的社区伙伴参与贡献,一起打造更加优秀的 MQTT X。

更精细的产品打磨

修复及优化
除添加上述新特性外,本次更新还修复了很多已知问题,稳定性得到了进一步提升。
修复自动重订阅设置的同步问题
修复导入 / 导出数据的问题
修复无法编辑已经创建的连接的问题
修复了 SSL/TLS 连接时,出现证书过期错误的问题
修复无法删除历史消息记录的问题
修复 Base 64 转化的问题
修复无法新建窗口的问题
修复连接列表连接时,出现乱序的问题

未来规划
MQTT X 还在持续增强完善中,以期为用户带来更多实用、强大的功能,为物联网平台的测试和开发提供便利。接下来将重点关注以下方面:
更完整的 MQTT 5.0 支持
插件系统(例如支持 SparkPlug B)
MQTT Debug 功能
脚本功能优化

小结
MQTT X 为连接测试 EMQ X 等 MQTT 消息服务器而生,通过一键式的连接方式和简洁的图形界面帮助使用者进行 MQTT 特性探索和功能组件调试。除提供基础 MQTT 测试连接功能,全开源和社区驱动等特性还使其集成了更多丰富、强大、符合用户使用习惯的功能特性。结合 MQTT X 与云原生分布式消息中间件 EMQ X,相信物联网平台的测试开发工作将变得更加轻松。MQTT X 项目完全开源,您可以到 GitHub 来提交使用过程中遇到的问题,或是 Fork MQTT X 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也在此感谢社区中所有用户的贡献和反馈,每一个社区用户的使用与肯定,都是我们产品前进的动力。

MQTT X CLI 发布:强大易用的 MQTT 5.0 命令行工具

2022年7月,由 EMQ 开源的 MQTT 5.0 跨平台桌面客户端 MQTT X 发布了 1.8.0 版本。MQTT X 为连接测试各类 MQTT 消息服务器而生,支持快速创建多个同时在线的 MQTT 客户端连接,采用一键式的连接方式和简洁的图形界面,帮助使用者便捷地测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接、发布、订阅功能,探索更多 MQTT 协议特性。最新发布的 v1.8.0 除了通过新增的快速复制连接功能优化使用体验之外,还扩展了两个新的使用场景,即增加了 CLI(命令行) 和 Web 端这两种新的交互方式 。这使得 MQTT X 1.8.0 成为支持使用场景最完整的 MQTT 测试客户端。用户可以根据使用需求,自行选择下载桌面客户端、使用终端命令行或是在桌面浏览器上快速完成对 MQTT 的连接测试。

MQTT X CLI:在终端快速开发和调试 MQTT 服务与应用

随着 MQTT 协议在物联网领域的广泛使用,越来越多的用户选择使用 MQTT X 进行物联网连接测试。对于部分用户如服务端开发者、服务运维人员等来说,下载桌面客户端可能会占用较多系统的磁盘空间,每次测试前都需要在带有图形化界面的操作系统中打开客户端应用来调试。在这种情况下,桌面客户端这种使用方式就变得不太友好。

因此 MQTT X 增加了命令行这一交互形式 ——MQTT X CLI。这是一款全开源的 MQTT 5.0 命令行客户端工具,即命令行上的 MQTT X。开发者无需使用图形化界面,就能通过 MQTT X CLI 使用命令行快速开发和调试 MQTT 服务与应用。从而实现以下使用目标:
在服务器终端内就可以测试已经部署好的 MQTT 服务
通过编辑和使用命令行脚本完成 MQTT 服务的快速测试
使用命令行脚本来完成一些简单的压力测试或自动化测试
便捷高效无需依赖环境即可安装使用

安装
MQTT X CLI 可以快速下载并安装到 macOS、Linux 和 Windows 系统上,安装前不需要任何的依赖环境准备,只需在终端内执行命令,即可安装和使用 MQTT X CLI。对于 macOS 和 Linux 系统的用户,提供了快捷的安装方法,使用命令行可以快速下载二进制文件,并安装最新的 MQTT X CLI 稳定版到操作系统上。Windows 用户则可以到 MQTT X 的发布页面内,找到对应的系统架构的 exe 包,手动下载后使用。注意下载安装时请注意区分当前使用系统环境的 CPU 架构。

快速开始
在完成下载安装后,便可在终端内直接输入 mqttx 命令来运行和使用了。可以加 -V 参数来验证 MQTT X CLI 是否安装成功,当输出一个版本号时,就证明 MQTT X CLI 已经成功安装。

$ mqttx -V
1.8.0

为测试 MQTT X CLI 的使用,需要准备一个 MQTT 服务,可使用 EMQ 提供的 免费公共 MQTT 服务器,该服务基于 MQTT 物联网云平台 - EMQX Cloud 创建,服务器接入信息如下:
Broker: broker.emqx.io
TCP Port: 1883
WebSocket Port: 8083

准备好 MQTT 服务后就可以在终端内使用命令行来完成消息的发布与订阅了,先在一个终端窗口内编辑一条订阅主题的命令。

订阅
mqttx sub -t 'mqttx/cli' -h 'broker.emqx.io' -p 1883
在完成订阅后再新建一个终端窗口,编辑一条发布到刚才订阅的主题的消息的命令。

发布
mqttx pub -t 'mqttx/cli' -h 'broker.emqx.io' -p 1883 -m 'hello from MQTTX CLI!'
此时可以在订阅主题命令的窗口内,看到一条刚才发布过来的消息。

发布多条消息

MQTT X CLI 还支持一个 pub 命令可以发布多条消息的功能,只需要在编辑是在命令中添加一个 -M 参数和 -s 参数,每次输入完成后换行即可:
mqttx pub -t 'mqttx/cli' -h 'broker.emqx.io' -p 1883 -s -M

最后再通过使用 MQTT X 的桌面客户端来和 MQTT X CLI 来连接到同一个 MQTT 服务,来测试和验证 MQTT X CLI 的功能,使用 MQTT X CLI 发布一条消息,通过 MQTT X 桌面客户端来接收,再反向使用 MQTT X 桌面客户端来发送一条消息到 MQTT X CLI。此时可以看到两边都收到了各自收发的消息。

至此就完成了使用 MQTT X CLI 对 MQTT 消息发布订阅功能的测试和验证。除上述常用功能使用外,MQTT X CLI 还支持设置遗嘱消息、使用 SSL/TLS 来测试 mqtts 的连接等。未来还将支持 MQTT 5.0 连接。

MQTT X CLI 的发布,为物联网开发者进行 MQTT 连接测试提供了一种新的选择。而对命令行调用、桌面客户端下载和在线浏览器这几种交互形式的完整支持,使得 MQTT X 1.8.0 可帮助不同使用场景需求的用户完成对 MQTT 服务或应用的开发与调试,从而提高用户自身相关业务能力与稳定性。简单易用的测试客户端工具 MQTT X 结合高效可靠的物联网消息服务器 EMQX,将帮助物联网开发者构建具有竞争力的物联网平台与应用。

附:使用帮助
可以在命令行内输入 --help 参数来获取使用帮助,或查阅下方的使用参数表来使用 MQTT X CLI。

# 获取 mqttx 命令的帮助
mqttx --help

# 获取订阅命令的帮助
mqttx sub --help

# 获取发布命令的帮助
mqttx pub --help

使用参数对照表
参数 描述
-V, --version 输出当前 MQTT X CLI 的版本号
-h, --help 展示 mqttx 命令的帮助信息
命令 描述
pub 向主题发布一条消息
sub 订阅一个主题
订阅
参数 描述
-h, --hostname MQTT Broker 的 Host 地址,默为 localhost
-p, --port MQTT Broker 的端口号
-i, --client-id 客户端 ID
-q, --qos <0/1/2> 消息的 QoS,默认为 0
--clean clean session 的标志位,默认为 true
-t, --topic 需要订阅的 Topic
-k, --keepalive MQTT 的 Keep Alive,默认为 30
-u, --username 连接到 MQTT Broker 的用户名
-P, --password 连接到 MQTT Broker 的密码
-l, --protocol 连接时的协议,mqtt, mqtts, ws or wss
--key key 文件的路径
--cert cert 文件的路径
--ca ca 证书的文件路径
--insecure 取消服务器的证书校验
--will-topic 遗嘱消息的 topic
--will-message 遗嘱消息的 payload
--will-qos <0/1/2> 遗嘱消息的 QoS
--will-retain 遗嘱消息的 retain 标志位
-v, --verbose 在接收到的 Payload 前显示当前 Topic
--help 展示 sub 命令的帮助信息
发布
参数 描述
-h, --hostname MQTT Broker 的 Host 地址,默为 localhost
-p, --port MQTT Broker 的端口号
-i, --client-id 客户端 ID
-q, --qos <0/1/2> 消息的 QoS,默认为 0
-t, --topic 需要发布的 Topic
-m, --message 需要发布的 Payload 消息
-r, --retain 设置发送消息为 Retain 消息,默认为 fasle
-s, --stdin 从 stdin 中读取信息体
-M, --multiline 可以通过多行发布多条消息
-u, --username 连接到 MQTT Broker 的用户名
-P, --password 连接到 MQTT Broker 的密码
-l, --protocol 连接时的协议,mqtt, mqtts, ws or wss
--key key 文件的路径
--cert cert 文件的路径
--ca ca 证书的文件路径
--insecure 取消服务器的证书校验
--will-topic 遗嘱消息的 topic
--will-message 遗嘱消息的 payload
--will-qos <0/1/2> 遗嘱消息的 QoS
--will-retain 遗嘱消息的 retain 标志位
--help 展示 pub 命令的帮助信息



项目主页:https://mqttx.app/zh