开始使用
准备 MQTT 服务器
公共的 MQTT 服务
如果您无需自行部署 MQTT 服务,您可以使用 EMQX 提供的在线公开版本进行快速测试:
Broker 地址: broker.emqx.io
Broker TCP 端口: 1883
Broker SSL 端口: 8883
全托管云原生 MQTT 消息服务
EMQX 提供全托管的云原生 MQTT 消息服务,能够通过可靠、实时的物联网数据传输、处理和集成,连接大量的物联网设备。您可以在几分钟内创建一个 MQTT 服务。
自行部署 MQTT 服务
如果您计划部署本地运行的 MQTT 服务,我们建议您下载并使用 EMQX。EMQX 是一款云原生分布式物联网 MQTT 消息服务器,能够高效可靠地连接大量物联网设备。
以下是使用 Docker 快速安装 EMQX 的方式:
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx
快速建立连接
在设置好 MQTT Broker 后,打开主程序页面,点击左侧菜单栏的 +
按钮。如果页面为空,您也可以直接点击右侧的 新建连接
按钮来快速设定新的客户端连接。
客户端连接信息
在创建页面,需要设定或填写连接客户端的相关信息。
- Broker 信息
Client ID
、Host
和Port
已经默认填写在Broker
信息栏中,您可以根据实际的Broker
信息自行修改。点击Client ID
右侧的刷新按钮,可以迅速生成新的Client ID
。
选择框位于Host
前面,用以选择该连接的协议,支持mqtt://
,ws://
。如果使用SSL/TLS
连接,需要修改为mqtts://
,wss://
。
注意:当协议更改时,需要修改连接的端口。 - 用户认证信息
如果您的 Broker 开启了用户认证,您可以在配置项中填写Username
和Password
信息。 - SSL/TLS
如果需要开启SSL/TLS
认证,在配置中开启SSL/TLS
,并提供CA signed server
或Self signed
中的一种方式。
若选择Self signed
,需要进行证书配置。点击最右侧的文件夹按钮,选择您已经生成好的各项证书。若是单向连接,只需选择您的CA File
。若是双向认证,还需要选择配置Client Certificate File
和Client key file
。开启Strict validate Certificate
选项后,将启用更完整的证书验证连接。此选项建议在需要测试正式环境时启用。
关于使用 SSL 安全开关:
SSL 安全开关是您 MQTT 配置中的一个选项,用于确定是否在建立连接时验证服务端证书链和地址名称。当将该开关设置为关闭时,将不会进行验证,即允许连接到未经验证的服务器。
SSL 安全开关的使用场景:- 开发环境:在开发环境中,为了方便测试和调试,可以关闭 SSL 安全开关,允许连接到未经验证的服务器。
- 内部网络:在受信任的内部网络环境中,如果没有外部访问风险,可以考虑关闭 SSL 安全开关,简化证书管理和验证过程。
需要注意的是,关闭 SSL 安全开关会降低连接的安全性。在生产环境或与外部网络通信时,建议打开 SSL 安全开关,确保通信的安全性和数据保护。 - 高级配置
在高级配置中,可以设置连接超时时长
、KeepAlive、Clean Session
、自动重连
、MQTT 版本
等。 - MQTT 5.0
在高级配置中,您可以选择 MQTT 的协议版本,支持 MQTT v3.1.1 和 MQTT v5.0。默认版本为 v3.1.1。如果选择了 v5.0,还可以配置Session Expiry Interval
、Receive Maximum
和Topic Alias Maximum
(可选)。 - 遗嘱消息
在高级配置下方的配置卡片中,您可以配置遗嘱消息。Last-Will-QoS
和Last-Will-Retain
的值默认为 0 和False
。当您输入Last-Will-Topic
和Last-Will-Payload
后,即可完成遗嘱消息的配置。
完成配置后,点击右上角的Connect
按钮就可以快速创建一个连接并连接至 MQTT Broker。
消息的发布与订阅
主界面
连接成功后,即可进入连接的主界面。点击顶部连接名称旁的折叠按钮,可以查看并修改该连接的基本信息。在断开连接的情况下,修改这些常用配置项需要重新连接后才能生效。每次连接成功后,面板都会自动折叠。断开连接时,您也可以点击右边的配置按钮进行更多连接配置的修改。
添加订阅
点击左下角的 New Subscription
按钮,可以快速添加一个 Topic。每个 Topic
可以用一种颜色进行标记,颜色可以随机生成或通过颜色选择器进行选择。添加完成后,点击订阅列表中的已订阅 Topic,可以实现消息过滤。此时消息视图中只会显示当前主题的消息内容,再次点击即可取消过滤。
在添加 Topic
时,可以给每个 Topic 设置一个别名。别名是可选项。设置别名并完成订阅
后,订阅列表中的 Topic
将以别名显示。鼠标悬浮在 Topic
项上时,提示框将同时显示出该 Topic
的原值。这在需要监控查看的多个 Topic
过长,难以辨别 Topic
具体含义时,有很大帮助。
在 Topic 输入框中输入多个 Topic,使用逗号(,)进行分割,点击确认订阅成功后,订阅列表中会包含多个 Topic。对于使用客户端层别名功能,也可以同时对多个 Topic 进行设置,同样使用逗号分隔(,)。
订阅的主题支持编辑/禁用/启用。右键点击已经订阅过的 Topic 列表项,在右键菜单中我们可以快速选择编辑、禁用或启用等操作。当订阅的 Topic 过多时,如果并非所有的 Topic 消息都需要接收,您可以使用禁用功能避免再次订阅相同的 Topic。需要重新接收该 Topic 的消息时,只需再次启用即可。
消息发送与接收
Topic
订阅成功后,就可以来测试消息的收发了。在页面右下角填入刚才所订阅的 Topic
信息,可选择 QoS 和 Retain
的值,输入 payload
后,点击最右侧的发送按钮,就向刚才订阅的 Topic
发送了一条消息。发送成功后,您也可以立即接收到刚才所发送的消息。注意,消息框内,右侧是发送的消息,左侧是接收到的消息。对于 macOS 用户,您可以使用 command + enter
快捷键,其它用户可以使用 control + enter
快捷键来快速发送消息。
发布和订阅的消息格式都支持快速的格式转换,在消息栏的 payload
选项,支持将消息快速转化为 Base64
、Hex
、JSON
、Plaintext
、CBOR
、MsgPack
六种格式。同时在消息列表上方,您也可以选择相同的格式对消息进行解码并展示。
注意: CBOR 和 MsgPack 是两种高效的二进制格式,在传输大体积数据时,相比 JSON 有更好的压缩和传输效率。当使用这些格式时,消息的输入输出都会使用 JSON 格式。
如需使用更高级的编解码功能,可以跳转到 脚本
页面,选择 编解码
标签,支持 Protobuf
和 Avro
两种编解码协议。
至此,您就完成了一条 MQTT
消息的测试。