Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure Web PubSub服务将客户端事件描述为 CloudEvents。 CloudEvents 是描述常见格式的事件数据的规范,用于跨服务、平台和系统提供互操作性。
服务的事件侦听器侦听客户端事件。 事件中心当前是唯一受支持的事件侦听器终结点,其主要协议是 AMQP(高级消息队列协议)。 Web PubSub 服务使用 CloudEvents AMQP 协议绑定 将 CloudEvents 映射到 AMQP 消息。
从服务发送到服务器的数据始终采用 CloudEvents binary 格式。
Web PubSub CloudEvents 属性扩展
此扩展定义 Web PubSub 为其生成的每个事件使用的属性。
下表包含映射到 AMQP 消息 的标准属性 部分的属性。
| 名称 | 说明 | 示例 |
|---|---|---|
content-type |
消息正文的 RFC-2046 MIME 类型 | application/json |
message-id |
唯一地在 Web PubSub 服务中定义消息,格式为“{connection-id}/{service}生成的整数” | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1 |
下表包含所有映射到 AMQP 消息 的应用程序属性 部分的 CloudEvents 属性。 每个属性名称的 cloudEvents:前缀为 .
| 名称 | 说明 | 示例 |
|---|---|---|
specversion |
云事件规范版本,始终为 1.0 | 1.0 |
source |
指示事件来自的中心和连接 ID,格式为“/hubs/{hub}/client/{connectionId}” | /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
id |
服务生成的整数,同一客户端连接的事件中唯一 | 1 |
awpsversion |
云事件Azure Web PubSub规范版本,始终为 1.0 | 1.0 |
hub |
事件来自的中心名称 | 聊天 |
eventname |
事件的名称 | 已连接 |
type |
事件类型 | azure.webpubsub.sys.connect |
connectionid |
客户端连接的 ID | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
time |
服务发送事件的时间,格式为“yyyy-MM-ddTHH:mm:ssZ” | 2021-01-01T00:00:00Z |
userid* |
用户的 ID | user1 |
subprotocol* |
子协议名称 | json.webpubsub.azure.v1 |
connectionstate* |
定义连接的状态。 可以在事件处理程序的响应标头中重置值。 有关连接状态的详细信息,请参阅 Web PubSub CloudEvents 属性。 | anystring |
属性名称后面的“*”指示仅当值不为 null 或为空时,该属性才存在。
事件
本部分显示 AMQP 消息正文,其中包含依赖于特定客户端事件类型的属性值。 省略不依赖于客户端事件类型的属性值。
- 系统
connect事件:事件侦听器不支持。 -
系统
connected事件 -
系统
disconnected事件 -
简单 WebSocket 客户端的用户事件
message -
PubSub WebSocket 客户端的用户自定义事件
{custom_event}
系统 connected 事件
-
content-type:application/json -
cloudEvents:type:azure.webpubsub.sys.connected -
cloudEvents:eventname:connected
消息正文始终为空 JSON。
{}
系统 disconnected 事件
-
content-type:application/json -
cloudEvents:type:azure.webpubsub.sys.disconnected -
cloudEvents:eventname:disconnected
消息正文包含客户端断开连接的原因。
{"reason":"{Reason}"}
简单 WebSocket 客户端的用户事件message
-
content-type:application/octet-stream用于二进制框架;text/plain对于文本框架; -
cloudEvents:type:azure.webpubsub.user.message
消息正文是客户端发送的内容。
PubSub WebSocket 客户端的用户自定义事件{custom_event}
-
content-type:application/octet-stream用于二进制帧;application/json对于 JSON 框架;text/plain对于文本框架;对于 Protobuf 框架;application/x-protobuf -
cloudEvents:type:azure.webpubsub.user.<event_name>
以下情况演示如何发送具有不同数据类型的事件和收到的 AMQP 消息正文。
案例 1:发送包含文本数据的事件:
{
"type": "event",
"event": "<event_name>",
"dataType": "text",
"data": "text data"
}
收到的 AMQP 消息正文:
text data
案例 2:发送包含 JSON 数据的事件:
{
"type": "event",
"event": "<event_name>",
"dataType": "json",
"data": {
"hello": "world"
}
}
收到的 AMQP 消息正文:
{
"hello": "world"
}
案例 3:发送包含二进制数据的事件:
{
"type": "event",
"event": "<event_name>",
"dataType": "binary",
"data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}
收到的 AMQP 消息正文:
<binary data>