草庐IT

2022 年值得尝试的 7 个 MQTT 客户端工具

EMQX 2023-04-25 原文

随着物联网行业的飞速发展,MQTT 协议也被越来越多的公司及开发者所使用。在学习和使用 MQTT 的过程中,一个得心应手的客户端工具可以极大的方便开发者进行 MQTT 特性的探索及物联网应用的调试,缩短开发周期。

目前 MQTT 客户端工具种类繁多,功能侧重点也不尽相同。对于初学者乃至 MQTT 专家来说,如何选择一个合适的 MQTT 客户端工具是一个难题。

我们根据自身的使用经验,对目前市面上常见的客户端工具进行了筛选和整理,选择了截至 2022 年最新、最实用的 7 个 MQTT 客户端工具,并按桌面端、浏览器端、命令行分类列出。希望本文可以帮助 MQTT 开发者快速找到一个合适的客户端工具,开展 MQTT 连接测试。

如何选择一个 MQTT 客户端?

MQTT 客户端工具常用于建立与 MQTT 服务器 的连接,进行主题订阅、消息收发等操作。一个优秀的 MQTT 客户端工具应该具备如下特性:

  • 支持加密连接;
  • 支持 MQTT 5 特性;
  • 在功能全面的基础上保持易用性;
  • 支持多个客户端同时在线;
  • 跨平台,不同操作系统下都可以使用;
  • 支持 MQTT over WebSocket;
  • 进阶功能:支持自定义脚本、日志记录、 MQTT Payload 格式转换等。

MQTT 桌面客户端

MQTT X

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

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

MQTT X 致力于打造优雅、易用的全平台 MQTT 客户端,并在最近发布了 MQTT X CLI 及 MQTT X Web 两个版本,目前在 GitHub Star 数已达到 2K,已成为使用场景最完整的 MQTT 测试客户端。

特性

  • 跨平台,支持 Windows,macOS 和 Linux
  • 支持 MQTT v3.1.1 以及 MQTT v5.0 协议
  • 单/双向 SSL 认证:支持 CA、自签名证书,以及单、双向 SSL 认证
  • 支持 Light、Dark、Night 三种主题模式切换
  • 支持 WebSocket 连接至 MQTT 服务器
  • 支持 Hex, Base64, JSON, Plaintext
  • 支持简体中文、英文、日文、土耳其文及匈牙利文
  • 订阅 Topic 支持自定义颜色标记
  • 支持 $SYS 主题自动订阅,查看流量统计
  • 自定义编辑脚本测试和模拟收发数据
  • 完整的日志记录

下载

MQTT Explorer

MQTT Explorer 是一个全面的 MQTT 客户端,它的一大亮点是提供了 MQTT 主题的结构化展示及动态预览。

MQTT Explorer 还支持对接收到的 payload 消息进行差异对比及可视化图表展示。与 MQTT.fx 相似,MQTT Explorer 只能创建一个单一的客户端连接,不能多个客户端同时在线。

特性

  • 可视化 Topics 和 Topic 变化的动态预览
  • 删除保留的 Topics
  • 搜索/过滤 Topics
  • 递归删除 Topics
  • 当前和以前收到的消息的差异视图
  • 发布 Toipcs
  • 绘制数字 Topics
  • 保留每个 Topic 的历史记录
  • Dark/Light 主题

下载

下载地址:https://github.com/thomasnordquist/MQTT-Explorer/releases

MQTT.fx

MQTT.fx 是由 Jens Deters 个人开发的,MQTT.fx 适用 Apache License 2.0 协议但并未提供源码。遗憾的是 MQTT.fx ⽬前已经停⽌维护,并转为由 Softblade 公司资助开发另发⾏了其商业版本 MQTT.fx® 5.0,采⽤收费许可证⽅式经营该软件。

MQTT.fx 使用 JavaFX 技术开发,可以保存多个连接配置,支持多种类型的加密方式,指定多种类型的证书,创建连接时可以指定使用 HTTP 代理服务器。

总的来说 MQTT.fx 有丰富且成熟的功能,支持了 TCP 连接中所有可能遇到的配置项,但是用户同一时间只能建立一个连接,不能满足同时使用多个测试连接的需求。另外它没有实现对 WebSocket 的支持,在 MQTT over WebSocket 的测试场景中无法使用。

特性

  • 预定义消息模板
  • 通过系统主题 $SYS 获取 broker 状态
  • 记忆最近使用主题的
  • 通过 Nashorn Engine ,支持 JavaScript 脚本
  • 支持日志显示,显示连接中的日志信息
  • 跨平台桌面,支持 Windows、MacOS 和 Linux

下载

下载地址:https://www.jensd.de/wordpress/?p=2746

MQTT 在线客户端

MQTT X Web

MQTT X Web 是一款开源的 MQTT 5.0 浏览器客户端,也是一个在线 MQTT WebSocket 客户端工具。开发者无需在本地下载和安装 MQTT X,即可使用 WebSocket 在浏览器中快速连接到 MQTT 服务器,更快地开发和调试 MQTT 服务和应用。

立即体验:http://www.emqx.io/online-mqtt-client

更多详情,请查看 GitHub 仓库:https://github.com/emqx/MQTTX/tree/main/web

MQTT 命令行客户端

MQTT X CLI

MQTT X CLI 是一款全开源的、强大而易用的 MQTT 5.0 命令行客户端工具,也是命令行上的 MQTT X,旨在帮助开发者无需使用图形化界面,也能快速开发和调试 MQTT 服务与应用。

特性

  • 无依赖限制:基于命令行的安装和使用,无任何环境依赖要求
  • 开放源码:基于 Apache License 2.0 协议,开放源码
  • 易于集成:可快速集成到自动化测试脚本中
  • 单/双向 SSL 认证:支持 CA、自签名证书,以及单、双向 SSL 认证

下载

MQTT X CLI 可以快速下载并安装到 macOS、Linux 和 Windows 系统上,安装前不需要任何的依赖环境准备,只需在终端内执行命令,即可安装和使用 MQTT X CLI。

立即下载试用:https://mqttx.app/zh/cli

快速开始

订阅

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

发布多条消息

mqttx pub -t 'mqttx/cli' -h 'broker.emqx.io' -p 1883 -s -M

MQTT X CLI 支持一个 pub 命令可以发布多条消息的功能,只需要在编辑是在命令中添加一个 -M 参数和 -s 参数,每次输入完成后换行即可。

NanoMQ CLI

NanoMQ 是用于物联网边缘的超轻量级 MQTT 消息服务器,它同时也内置了一个强大的 MQTT 协议性能测试工具 bench 及 MQTT 测试客户端。

特性

  • 支持性能测试
  • 支持 MQTT 5.0
  • 可运行在边缘端
  • 支持从文件读取数据作为 payload

下载

下载地址:https://nanomq.io/zh/downloads

快速开始

性能测试工具 bench

# 启动 10 个连接,每秒向主题 t 发送 100 条 Qos0 消息,其中每个消息负载的大小为 16 字节
nanomq_cli bench pub -t t -h broker.emqx.io -s 16 -q 0 -c 10 -I 10

# 启动 500 个连接,每个连接使用 Qos0 订阅 t 主题
nanomq_cli bench sub -t t -h broker.emqx.io -c 500

# 启动 100 个连接
nanomq_cli bench conn -h broker.emqx.io -c 100

MQTT 测试客户端

# 向主题 t 发送 100 条 Qos2 消息测试。
nanomq_cli pub -t t -h broker.emqx.io -q 2 -L 100 -m test

# 订阅主题 t
nanomq_cli sub -t t -h broker.emqx.io -q 1

Mosquitto CLI

Mosquitto 是一个开源(EPL/EDL 许可证)的消息代理,安装之后默认提供了 mosquitto_pub 和 mosquitto_sub 两个命令行 MQTT 客户端工具。

Mosquitto CLI 有多个配置选项,支持 TLS 证书连接、通过代理服务器连接,支持 debug 模式,在 debug 模式下可以获取更详细的消息信息。

特性

  • 轻量级命令行工具,支持 debug 模式
  • 支持加密及非加密连接至 MQTT 服务器
  • 便于在远程服务器测试

下载

下载地址:https://github.com/eclipse/mosquitto

快速开始

订阅

mosquitto_sub -t 'test/topic' -v

发布

mosquitto_pub -t 'test/topic' -m 'hello world'

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/mqtt-client-tools

有关2022 年值得尝试的 7 个 MQTT 客户端工具的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  4. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  5. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  6. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  7. ruby-on-rails - 尝试设置 Amazon 的 S3 存储桶 : 403 Forbidden error & setting permissions - 2

    我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不

  8. arrays - Ruby:尝试在哈希数组上获取 Enumerator 时,nil:NilClass 的未定义方法 `[]' - 2

    我正在尝试循环哈希数组。当我到达获取枚举器开始循环的位置时,出现以下错误:undefinedmethod`[]'fornil:NilClass我的代码如下所示:defextraireAttributs(attributsParam)classeTrouvee=falsescanTrouve=falseownerOSTrouve=falseownerAppTrouve=falseresultat=Hash.new(0)attributs=Array(attributsParam)attributs.eachdo|attribut|#CRASHESHERE!!!typeAttribut=a

  9. ruby-on-rails - 尝试为 Rails 中的用户名验证编写 REGEX - 2

    我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z

  10. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

随机推荐