分享方式:


Azure Web PubSub 基本概念

Azure Web PubSub 服務可協助您建置即時傳訊 Web 應用程式。 用戶端會使用標準 WebSocket 通訊協定連線到服務,而服務會公開 REST API 和 SDK,讓您管理這些用戶端。

詞彙

以下是本服務使用的一些重要字詞:

  • 連線:連線也稱為用戶端或用戶端連線,代表連線到 Web PubSub 服務的個別 WebSocket 連線。 成功連線時,Web PubSub 服務會指派唯一的連線識別碼給這個連線。

  • 中樞:中樞是一組用戶端連線的邏輯概念。 您通常會針對一個案例使用一個中樞,例如「聊天」中樞或「通知」中樞。 用戶端連線在連線時會連線到中樞,並且在其存留期內屬於該中樞。 用戶端連線一旦連線到中樞,中樞便會存在。 不同的應用程式可以使用不同的中樞名稱來共用一個 Azure Web PubSub 服務。 雖然中樞數目沒有嚴格限制,但與群組相比,中樞耗用更多服務負載。 建議有一組預先決定的中樞,而不是以動態方式產生中樞。

  • 群組:群組是中樞連線的子集。 您可以隨時將用戶端連線新增至某個群組,或從群組中移除用戶端連線。 例如,當用戶端加入聊天室時,或當用戶端離開聊天室時,便可將此聊天室視為群組。 用戶端可以加入多個群組,群組則可以包含多個用戶端。 群組就像是群組「會議」,一旦有人加入群組,系統就會建立群組會議,當群組中沒有任何人時,會議就會消失。 傳送至群組的訊息會傳遞至與群組連線的所有用戶端。

  • 使用者:Web PubSub 的連線可以屬於一個使用者。 使用者可能會有多個連線,例如,當單一使用者跨多個裝置或多個瀏覽器索引標籤連線時。

  • 訊息:當用戶端連線時,其可以透過 WebSocket 連線將訊息傳送至上游應用程式,或從上游應用程式接收訊息。 訊息可以是純文字、二進位或 JSON 格式,且大小上限為 1 MB。

  • 用戶端連線ConnectionId:用戶端會連線到 /client 端點,一旦連線,服務便會產生唯一的 connectionId,當作用戶端連線的唯一身分識別。 接著,使用者可以使用這個 connectionId 來管理用戶端連線。 <用戶端通訊協定>一節會有詳細說明。

  • 用戶端事件:系統會在用戶端連線的生命週期內建立事件。 例如,簡單 WebSocket 用戶端連線會在嘗試連線到服務時建立 connect 事件、在成功連線到服務時建立 connected 事件、在將訊息傳送到服務時建立 message 事件,以及在與服務中斷連線時建立 disconnected 事件。 <用戶端通訊協定>一節會有「用戶端事件」的詳細說明。

  • 事件處理常式:事件處理常式包含處理用戶端事件的邏輯。 請事先透過入口網站或 Azure CLI,在服務中註冊和設定事件處理常式。 <事件處理常式>一節會有詳細說明。

  • 事件接聽程式 (預覽):事件接聽程式只會接聽用戶端事件,但無法透過其回應干擾用戶端的存留期。 <事件接聽程式>一節會有詳細說明。

  • 伺服器:伺服器可以處理用戶端事件、管理用戶端連線,或將訊息發佈至群組。 事件處理常式和事件接聽程式都會視為伺服器端。 <伺服器通訊協定>一節會有伺服器的詳細說明。

重要

當您管理用戶端並傳送訊息時,HubGroupUserId 是重要的角色。 它們會是不同 REST API 呼叫中作為純文字的必要參數。 因此,請勿在這些欄位中放置敏感性資訊。 例如,具有高外洩風險的認證或持有人權杖。

工作流程

使用服務的一般工作流程如下所示:

Diagram showing the Web PubSub service workflow.

如上方工作流程圖表所示:

  1. 「用戶端」會使用 WebSocket 傳輸來連線到服務 /client 端點。 服務會將每個 WebSocket 框架轉送到設定的上游 (伺服器)。 WebSocket 連線可與任何自訂子通訊協定連線以供伺服器處理,也可與服務支援的子通訊協定 json.webpubsub.azure.v1 連線,讓用戶端能夠直接發佈/訂閱。 <用戶端通訊協定>會有詳細說明。

  2. 在不同的用戶端事件上,服務會使用 CloudEvents 通訊協定叫用伺服器。 CloudEvents 會以標準化且與通訊協定無關的方式定義 Cloud Native Computing Foundation (CNCF) 所裝載事件的結構和中繼資料描述。 通訊協定通訊協定中會有詳細說明。

  3. 伺服器可以使用 REST API 叫用服務,以將訊息傳送至用戶端,或管理已連線的用戶端。 <伺服器通訊協定>會有詳細說明