前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2022 年值得尝试的 7 个 MQTT 客户端工具

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

原创
作者头像
EMQ映云科技
发布于 2022-08-02 03:01:51
发布于 2022-08-02 03:01:51
3.9K0
举报
文章被收录于专栏:EMQ 物联网EMQ 物联网

随着物联网行业的飞速发展,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

快速开始

订阅

代码语言:text
AI代码解释
复制
mqttx sub -t 'mqttx/cli' -h 'broker.emqx.io' -p 1883

发布

代码语言:text
AI代码解释
复制
mqttx pub -t 'mqttx/cli' -h 'broker.emqx.io' -p 1883 -m 'hello from MQTTX CLI!'

发布多条消息

代码语言:text
AI代码解释
复制
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

代码语言:text
AI代码解释
复制
# 启动 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 测试客户端

代码语言:text
AI代码解释
复制
# 向主题 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

快速开始

订阅

代码语言:text
AI代码解释
复制
mosquitto_sub -t 'test/topic' -v

发布

代码语言:text
AI代码解释
复制
mosquitto_pub -t 'test/topic' -m 'hello world'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
jQuery带参跳转新页面,新页面获取url多个参数的办法
需求: a页面有多个参数 跳转到b页面 在b页面获取a页面带过来的参数 a.html
王小婷
2021/06/29
2.7K0
JavaScript decodeURI() 函数
decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。 语法
王小婷
2021/06/01
6490
JavaScript decodeURI() 函数
jQuery :contains 选择器
经常与其他元素/选择器一起使用,来选择指定的组中包含指定文本的元素(如下面的例子)。
王小婷
2021/07/08
6890
jQuery将json性别数据int类型进行格式化渲染
<!DOCTYPE HTML> <html> <head> <title></title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="https:
王小婷
2022/01/09
7650
jQuery将json性别数据int类型进行格式化渲染
jQuery数据结构渲染(4):复选框checkbox赋值
1:当返回值是字符串的时候 data.json: { "circle": "2;3;4;5;6;1" } 示例代码: <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>复选框checkbox自定义样式</title> <meta name="viewport" content="width=device-width, initial-scale=1">
王小婷
2020/05/18
1.2K0
jQuery数据结构渲染(4):复选框checkbox赋值
JS获取当前系统时间戳的方法
1:精确到秒 <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>JS获取当前时间戳的方法</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charse
王小婷
2020/10/23
11.5K0
把https地址作为变量拼接在link/script 内部
下面是之前写的一个交互的例子,直接拿过来用一用啦,最主要的在于将把https地址作为变量拼接在link/script 内部,其余的都是次要的。
王小婷
2020/12/29
8770
javascript escape()和unescape()区别
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
王小婷
2021/07/13
2K1
JS字符串中的第一个字母大写(两种方法)
一个非常常见的操作是将字符串的第一个字母大写。虽然许多编程语言都有一种本地方法来实现这一点,但 JS 需要做一些工作。
王小婷
2021/06/10
7.8K0
JQuery 获取选中多选框的value,合并成字符串传给后台
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>JQuery 获取选中多选框的value,合并成字符串传给后台</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/
王小婷
2021/01/13
6140
时间转换:toLocaleDateString()的坑
今天说一个关于toLocaleDateString()的坑。 安卓手机picker 时间选择 默认时间显示英文
王小婷
2020/07/30
1.4K0
复选框checkbox提交数据类型和方法
对应的渲染方法如下: jQuery数据结构渲染(4):复选框checkbox赋值 https://www.jianshu.com/p/3878ff8c76d9
王小婷
2020/05/26
1.4K0
复选框checkbox提交数据类型和方法
JQuery 获取选中checkbox多选框的value,合并成数组传给后台
需求: JQuery 获取选中多选框的value,合并成数组传给后台 在ajax请求的时候,需要给后端传一个参数 deviceId,这个 deviceId是一个list集合,也就是一个数组,需要把选中的几个数值放在这个数组里面,当做参数传递。
王小婷
2022/01/09
3.3K0
JQuery 获取选中checkbox多选框的value,合并成数组传给后台
jQuery数据渲染,每行显示4个数据,超过四条数据自动换行
[{"name":"体验区统计","numb":0},{"name":"test909","numb":0},{"name":"test910","numb":0},{"name":"111","numb":0},{"name":"test","numb":0},{"name":"test11111","numb":0},{"name":"记忆区统计","numb":0}] 代码: <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org">
王小婷
2022/01/09
5630
jQuery数据渲染,每行显示4个数据,超过四条数据自动换行
jQuery点击图片开启,再次点击图片关闭效果
要求:jQuery点击图片开启,再次点击图片关闭效果 2:获取选中的图片的状态 并以整型的格式传给后端
王小婷
2022/01/09
8.5K0
jQuery点击图片开启,再次点击图片关闭效果
jquery点击按钮,添加一行input输入框
点击添加按钮的时候,会添加一行input输入框,使用jquery来实现一下。虽然现在前端开发小伙伴们都不用jquery了,但是,我还是决定要记录一下这个小demo,因为用到的比较多。
王小婷
2020/09/27
5K0
JQuery 获取选中select下拉框的value和text的值,合并成数组传给后端
提交格式 "workFences": [ { "fenceId": "ew32w2wf232fwer23", "fenceName": "区域q" }, { "fenceId": "ew32w2wf232fw543r23", "fenceName": "区域b" } ], test.json {"msg":"查询成功","code":1,
王小婷
2022/03/29
2.8K0
JQuery 获取选中select下拉框的value和text的值,合并成数组传给后端
es6扩展运算符、concat方法合并多个数组
1:ES6扩展运算符、合并多个数组 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> <link rel="stylesheet" href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://cdn.bo
王小婷
2022/12/10
6270
es6扩展运算符、concat方法合并多个数组
推荐阅读
相关推荐
jQuery带参跳转新页面,新页面获取url多个参数的办法
更多 >
LV.3
这个人很懒,什么都没有留下~
目录
  • 如何选择一个 MQTT 客户端?
  • MQTT 桌面客户端
    • MQTT X
      • 特性
      • 下载
    • MQTT Explorer
      • 特性
      • 下载
    • MQTT.fx
      • 特性
      • 下载
  • MQTT 在线客户端
    • MQTT X Web
  • MQTT 命令行客户端
    • MQTT X CLI
      • 特性
      • 下载
      • 快速开始
    • NanoMQ CLI
      • 特性
      • 下载
      • 快速开始
    • Mosquitto CLI
      • 特性
      • 下载
      • 快速开始
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档