共用方式為


MQTT 用戶端與 Web PubSub 用戶端之間的跨通訊協議通訊

有時候您想要讓 MQTT 用戶端和其他用戶端在一個中樞中同時使用 Azure Web PubSub 的通訊協定,以啟用跨通訊協議通訊。 本檔會定義這類通訊的運作方式。

概念

首先,讓我們在跨通訊協定通訊的內容中釐清概念。

  • MQTT 用戶端:使用 MQTT 通訊協定的用戶端。
  • Web PubSub 用戶端:使用 Web PubSub 本身的通訊協定搭配 pub/sub 功能的用戶端。 範例包括 json.webpubsub.azure.v1protobuf.webpubsub.azure.v1json.reliable.webpubsub.azure.v1protobuf.reliable.webpubsub.azure.v1。 您可以在這裡找到 Web PubSub 用戶端通訊協定的概觀。
  • 可靠的 Web PubSub 用戶端:使用 Web PubSub 可靠通訊協定的 Web PubSub 用戶端子集,特別是 json.reliable.webpubsub.azure.v1protobuf.reliable.webpubsub.azure.v1

概念對應

訊息路由行為

從概 觀:Azure Web PubSub 服務中的 MQTT,我們瞭解在 Web PubSub 通訊協定中加入群組的運作方式與訂閱 MQTT 中的相同具名主題相同。 同樣地,傳送至群組表示發佈至相同的具名主題。 這表示如果使用 Web PubSub 通訊協定的用戶端會聯結群組 a,則會從傳送至主題 a的 MQTT 用戶端取得訊息,反之亦然。

訊息內容類型轉換

在 Web PubSub 通訊協定中,有四種訊息數據類型:Text、Binary、JSON 和 Protobuf。

在 MQTT 通訊協定中,沒有字段可指出 MQTT 3.1.1 中的訊息內容類型,但 MQTT 5.0 中有字串「內容類型」欄位。

以下是 MQTT “content type” 字段與 Web PubSub 訊息數據類型之間的轉換:

MQTT 「內容類型」 Web PubSub “message 數據類型”
application/json JSON
text/plain Text
application/x-protobuf Protobuf
application/octet-stream Binary
缺席或 MQTT 3.1.1 Binary

訊息內容轉換

對於以文字為基礎的 Web PubSub 訊息數據類型,包括 textjson,它們會透過 UTF-8 編碼來回轉換成 MQTT。 對於二進位型 Web PubSub 訊息數據類型,包括 protobufbinary,它們在 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 訊息到期間隔