Azure Web PubSub 基本概念

Azure Web PubSub 服务有助于你构建实时消息传送 Web 服务。 客户端使用标准 WebSocket 协议连接到服务,且该服务公开 REST API 和 SDK,供你管理这些客户端。

术语

下面是服务使用的一些重要术语:

  • 连接:连接(也称为客户端或客户端连接)表示连接到 Web PubSub 服务的单个 WebSocket 连接。 成功连接后,Web PubSub 服务会向此连接分配唯一的连接 ID。

  • 中心:中心是客户端连接集的逻辑概念。 通常将一个中心用于一种方案,例如聊天中心或通知中心。 当客户端连接进行连接时,它会连接到某个中心,并且在其生存期内属于该中心。 客户端连接连接到中心后,中心就会存在。 不同的应用程序可以使用不同的中心名称共享一个 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 指与协议无关的标准定义,用于说明云原生计算基金会 (CNCF) 托管的事件的结构和元数据。 详情请参阅服务器协议

  3. 服务器可以使用 REST API 调用服务,以将消息发送到客户端或管理已连接的客户端。 详情请参阅服务器协议