有时,你希望在一个中心内将 Azure Web PubSub 的协议结合使用 MQTT 客户端和其他客户端,从而实现跨协议通信。 本文档定义此类通信的工作原理。
概念
首先,让我们在跨协议通信的上下文中阐明概念。
- MQTT 客户端:使用 MQTT 协议的客户端。
-
Web PubSub 客户端:使用 Web PubSub 自己的协议和 pub/sub 功能的客户端。 示例包括
json.webpubsub.azure.v1、protobuf.webpubsub.azure.v1、json.reliable.webpubsub.azure.v1和protobuf.reliable.webpubsub.azure.v1。 可 在此处找到 Web PubSub 客户端协议的概述。 -
Reliable Web PubSub 客户端:使用 Web PubSub 可靠协议的 Web PubSub 客户端的子集,具体而言
json.reliable.webpubsub.azure.v1,以及protobuf.reliable.webpubsub.azure.v1。
概念映射
消息路由行为
从 概述:Azure Web PubSub 服务中的 MQTT 中,我们了解到加入 Web PubSub 协议中的组的工作方式与订阅 MQTT 中的同一命名主题相同。 同样,发送到组意味着发布到同一命名主题。 这意味着,如果使用 Web PubSub 协议的客户端加入组 a,它将从发送到主题 a的 MQTT 客户端获取消息,反之亦然。
消息内容类型转换
在 Web PubSub 协议中,有四种消息数据类型:文本、二进制、JSON 和 Protobuf。
在 MQTT 协议中,没有字段指示 MQTT 3.1.1 中的消息内容类型,但 MQTT 5.0 中有一个字符串“内容类型”字段。
下面是 MQTT“内容类型”字段与 Web PubSub 消息数据类型之间的转换:
| MQTT“内容类型” | Web PubSub“消息数据类型” |
|---|---|
application/json |
JSON |
text/plain |
文本 |
application/x-protobuf |
Protobuf |
application/octet-stream |
Binary |
| 缺席或 MQTT 3.1.1 | Binary |
消息内容转换
对于基于文本的 Web PubSub 消息数据类型,包括 text 和 json,它们通过 UTF-8 编码转换到 MQTT 并从 MQTT 转换。 对于基于二进制的 Web PubSub 消息数据类型,包括 protobuf 和 binary,它们在 MQTT 消息内容中保持不变。
消息服务质量(QoS)转换
在 Web PubSub 协议中,客户端接收的消息的 QoS 由客户端的协议决定。 可靠客户端仅获取 QoS 1 消息,而其他客户端仅获取 QoS 0 消息。
在 MQTT 协议中,客户端接收的消息的 QoS 由消息 QoS(发送 QoS)和已授予的订阅 QoS(特别是两者的较小值)决定。
当消息跨协议传输时,收到的 QoS 的定义如下:
| 邮件发件人 | 消息接收器 | QoS 评估 |
|---|---|---|
| MQTT 客户端 | Reliable Web PubSub 客户端 | QoS 始终为 1 |
| MQTT 客户端 | 其他 Web PubSub 客户端 | QoS 始终为 0 |
| Web PubSub 客户端 | MQTT 客户端 | Min(1,已授予订阅 QoS) |
其他
此处列出的消息属性跨协议生效。 其他人没有。
- MQTT 消息到期间隔