# MQTTX 1.9.6 发布：ALPN 协议支持，UI 持续优化

> 本次更新主要重点在于加强连接协议、并对用户界面进行了优化，旨在提供一个更高效、安全和用户友好的体验。

> Language: zh-CN · Published: 2023-09-26 · Category: 版本发布 · Version: 1.9.6 · Canonical: https://mqttx.app/zh/blog/mqttx-v-1-9-6-release-notes · Translation: [English](https://mqttx.app/blog/mqttx-v-1-9-6-release-notes.md)

近日，[MQTT](https://www.emqx.com/zh/blog/the-easiest-guide-to-getting-started-with-mqtt) 5.0 客户端工具 MQTTX 发布了1.9.6 版本的更新。本次更新主要重点在于加强连接协议、并对用户界面进行了优化，旨在提供一个更高效、安全和用户友好的体验。新版本引入了 ALPN 协议支持，增强了连接的效率和安全性，同时也对发布选项的用户界面进行了改进，使其更为直观和友好。和往常一样，此次更新也离不开社区伙伴的持续支持和贡献，在此也表示感谢。

> 最新版本下载：[https://mqttx.app/zh/downloads](https://mqttx.app/zh/downloads)

## ALPN 协议支持

在新版本中，我们在桌面客户端，网页端和命令行客户端中，同时引入了 ALPN（应用层协议协商）协议的支持，这一新功能允许用户在同一端口上测试多个 TLS 协议，例如 MQTTS 和 MQTT over WSS，极大地优化了受限网络环境的性能。现在，用户可以轻松选择并指定 ALPN 协议，确保更高效和稳定的连接。该功能是由社区用户 [twankamp](https://github.com/twankamp) 提供，在此表示感谢。

对于桌面端和网页端，用户在启用 `SSL/TLS` 开关后将看到一个可选的 ALPN 输入框，可以用逗号分隔来输入多个协议。

![MQTTX 支持 ALPN 协议](https://assets.emqx.com/images/89f743385be3c17bf92ce8365710becd.png?x-image-process=image%2Fresize,w_1536%2Fformat,webp)

对命令行客户端用户来说，可以在连接、发布和订阅时快速使用 `--alpn <PROTO...>` 选项来设置一个或多个 ALPN 协议。例如：

```text
mqttx conn -h 127.0.0.1 -p 1883 --alpn mqtts
```

> 该参数可适用于 conn、pub 和 sub 命令中。

## 优化发布选项界面

为了让用户能够更加顺畅和高效地使用 MQTTX，我们对发布选项界面进行了一系列的优化。在桌面端和网页端，我们简化了发布和接收的格式选择框和 QoS 选择框的样式，同时引入了新的动作按钮，旨在使界面看起来更加清晰和整洁。

![MQTTX 发布选项界面](https://assets.emqx.com/images/8ddcc72932cfa8dd6af0fc35f8f12ff0.png?x-image-process=image%2Fresize,w_1536%2Fformat,webp)

## 新增动作按钮

在新版本中，我们引入了专门针对发布操作的“动作按钮”。新的动作按钮使清除保留消息变得更为简便，特别是对于新手来说，可以更加快速和便捷地清除保留消息，提供了一个更为直观和友好的使用体验。

除此之外，我们还调整了定时消息的设定位置。在桌面端，我们将其从连接菜单迁移至发送部分的动作按钮中，使其更符合用户的使用习惯和逻辑，从而更加简洁直观。

![MQTTX 动作按钮](https://assets.emqx.com/images/b34916affba940e38bd055de8c036c2d.png?x-image-process=image%2Fresize,w_1536%2Fformat,webp)

值得一提的是，新的动作按钮预示着未来将有更多的扩展功能陆续推出，为 MQTTX 的功能性和灵活性打开更多可能。

## 清除历史数据功能增强

在新版本中，清除历史数据功能得到了扩展，现包含所有连接中的历史消息记录，让您更便捷地管理消息来节省磁盘空间。该功能位于设置页面中。

![MQTTX 清除历史数据](https://assets.emqx.com/images/a7a302557b166f8f76ea793d74643a72.png?x-image-process=image%2Fresize,w_1536%2Fformat,webp)

![MQTTX 确认清除历史数据](https://assets.emqx.com/images/fd71143ab2e1fee656eb26f432e72c44.png?x-image-process=image%2Fresize,w_1536%2Fformat,webp)

## 修复及优化

在 1.9.6 版本中，我们对 MQTTX 进行了一系列的修复和优化，以确保用户获得更顺畅、更可靠的使用体验。以下是此次更新中的主要修复和优化内容：

- **保留消息发布（桌面端）**：解决了不能正确清除保留消息的问题，现在可以正常发布一条空消息来清除对应主题下的保留消息。
- **CLI Base64 消息发布（CLI）**：解决了 CLI 发布 Base64 格式消息的问题，确保消息传输更为准确和可靠。
- **MQTT 5 属性展示（桌面端）**：现在消息框将更完整、更正确地显示 MQTT 5 的属性，从而提升了用户界面的体验。
- **JSON 消息类型转换（网页端）**：优化了 JSON 消息的处理机制，现可以准确地转换接收到的 JSON 消息类型，避免了之前存在的显示错误。

## 注意事项

- **数据备份**：在升级到新版本之前，我们建议用户备份当前的数据。这是由于在升级过程中，尤其是从一个较旧的版本升级时，可能会因数据库迁移失败而导致数据丢失。
- **相关议题**：您可以通过以下链接了解到更多有关这个更新的信息：

  - [Issue 1405](https://github.com/emqx/MQTTX/issues/1405)
  - [Issue 1414](https://github.com/emqx/MQTTX/issues/1414)
  - [Issue 1422](https://github.com/emqx/MQTTX/issues/1422)

## 未来规划

- **物联网场景数据模拟**：将此功能同步到桌面客户端中，简化物联网场景的测试。
- **Sparkplug B 支持**：扩展 MQTTX 的功能，以包含 Sparkplug B 的支持。
- **QoS 0 消息存储优化**：通过可配置的选项来减少存储空间的占用。
- **MQTT Debug 功能**：引入辅助用户调试 MQTT 通信的功能。
- **自动图表绘制**：将接收到的消息自动转化为图表，以便于分析。
- **插件功能**：推出支持如 [CoAP](https://www.emqx.com/zh/blog/coap-protocol) 和 MQTT-SN 等协议扩展的插件系统。
- **Avro 消息格式支持**：引入支持 Avro 消息格式的编解码功能。
- **脚本测试自动化 (Flow)**：简化创建和管理自动化测试流程的功能。
