• 已删除用户
Administrator
发布于 2022-08-05 / 98 阅读
0

MQTT 使用MQTTX实现消息的发布与订阅

MQTT XEMQ 开源的一款优雅的跨平台 MQTT 5.0 桌面客户端,它支持 macOS, Linux, Windows。
MQTT X 的 UI 采用了聊天界面形式,简化了页面操作逻辑,用户可以快速创建连接,允许保存多个客户端,方便用户快速测试 MQTT/MQTTS 连接,及 MQTT 消息的订阅和发布。

简介

特点

  • 跨平台,支持 Windows,macOS,Linux

  • 支持 MQTT v3.1.1 以及 MQTT v5.0

  • 支持 CA、自签名证书,以及单、双向 SSL 认证

  • 多主题 Light、Dark、Night(Purple)三种主题模式切换

  • 支持简体中文以及英文

  • 支持 WebSocket 连接至 MQTT 服务器

  • 订阅 Topic 时可自定义颜色标记

  • 支持 $SYS 主题自动订阅,并可按层级展开

  • 支持多种 Payload 格式 Hex, Base64, JSON, Plaintext

下载安装

MQTT 服务器

搭建自己的 MQTT 服务器,详见 MQTT 消息服务器EMQX

如果您不需要本地部署的 MQTT Broker,那么可以使用 EMQX 的线上公开版进行快速测试。

Broker 地址: broker.emqx.io
Broker TCP 端口: 1883
Broker SSL 端口: 8883

建立连接

在准备好 MQTT Broker 后,进入到主程序页面,可点击左侧菜单栏中的 + 号,如果页面没有数据,还可以直接点击右侧的 新建连接 按钮,快速配置一个新的客户端连接。

进入到创建页面后,需配置或填写连接客户端的相关信息。

Broker 信息

配置 Broker 信息时,Client IDHostPort 已经默认填写,您也可根据实际的 Broker 信息自行修改。点击 Client ID 右侧的刷新按钮,可快速生成新的 Client ID

Host 前的选择框,用来选择该连接的协议,支持 mqtt://ws://,如果是 SSL/TLS 认证连接的话,需要修改为 mqtts://wss://

注意:当协议修改时,需要修改连接的端口。

用户认证信息

如果您的 Broker 开启了用户认证,配置项中可填写 UsernamePassword 信息。

SSL/TLS

当需要开启 SSL/TLS 认证时,只需要将配置中的 SSL/TLS 配置项设置为 true,并提供了 CA signed selfSelf signed 两种方式。

如果选择了 Self signed,可进行证书配置,点击最右侧的文件夹按钮,选择您已经生成好的各项证书,如果是单向连接,只需要选择您的 CA File 即可,如果是双向认证,还需要选择配置 Client Certificate FileClient key file。当开启 Strict validate Certificate 的选项后,会启用更完整的证书验证连接,一般推荐在需要测试正式环境时启用。

高级配置

高级配置中,可以配置Connect TimeoutKeepAliveClean SessionAuto ReconnectMQTT Version 等。

MQTT 5.0

在高级配置中,可以选择 MQTT 的协议版本,支持 MQTT v3.1.1 和 MQTT v5.0 版本, 如果选择了 v5.0 版本后,还可配置 Session Expiry IntervalReceive MaximumTopic Alias Maximu等(可选)。

遗嘱消息

在高级配置下方的配置卡片中,可以配置遗嘱消息,Last-Will-QoSLast-Will-Retain 的值默认填充为 0False,当您输入 Last-Will-TopicLast-Will-Payload 的值后,就可以完成对遗嘱消息的配置。

消息的发布订阅

常用配置

连接成功后,即可进入到连接的主界面,点击顶部连接名称旁的折叠按钮,可以展开并显示该配置的几个基础信息,方便快速修改该连接的几个常用配置,修改时需断开连接,重新点击连接后即可生效,每次连接成功后,面板都会自动往上折叠。在断开连接的状态下,也可点击右边配置按钮,进行更多的连接配置修改。

添加订阅

点击左下角的 New Subscription 按钮,可以快速添加一个 Topic,每个 Topic 都可以用一种颜色标记,可以随机生成或打开颜色选择器选择。订阅列表顶部的最右侧的按钮,可以隐藏订阅列表,来显示页面更多的空间。添加完成后,点击订阅列表中已经订阅的 Topic 项,可以实现消息过滤,消息视图内将只显示订阅了当前主题的消息内容,再次点击即可取消过滤;也可直接点击其它已订阅的 Topic 项,查看其对应的消息内容。而点击 Topic 名称,即可快速复制当前的 Topic 信息。当需要向该 Topic 发送消息时,只需快速粘贴到消息栏的 Topic 输入框内进行修改,便可快速完成该操作。

设置别名
在添加 Topic 时,可以给每个 Topic 设置一个别名,该选项为一个可选项,当设置并添加完成订阅后,订阅列表中的 Topic 数据将以别名展示,鼠标悬浮到 Topic 项时,提示框也会同时展示出该 Topic 的原值。这对于需要监控查看的多个 Topic 过长,无法分辩 Topic 的具体含义时,具有较强的帮助性。

订阅多个 Topic
我们打开订阅主题的弹出框后,在 Topic 输入框内,输入多个 Topic 并使用逗号(,)进行分割,点击确认订阅成功后,我们可以看到订阅列表中包含了多个 Topic。对于使用客户端层的别名功能也可以支持同时对多个 Topic 进行设置,同理使用逗号分隔(,)。

消息发送和接收

Topic 订阅成功后,就可以来测试消息的收发了。在页面右下角填入刚才所订阅的 Topic 信息(注意:输入框不显眼,容易遗漏),可选择 QoSRetain 的值,输入 payload 后,点击最右侧的发送按钮,就向刚才订阅的 Topic 发送了一条消息。发送成功后,也可以即时接收到刚才所发送的消息。注意,在消息框内,右边栏为发送的消息。左边栏为接收到的消息。macOS 用户可以使用 command + enter 快捷键,其它用户可以使用 control + enter 快捷键来快速发送消息。

消息栏的 payload 选项,可以快速将消息转化为多种格式,支持 Base64HexJSONPlaintext

至此就完成了一条 MQTT 消息的测试。