Azure SignalR 服务事件允许应用程序使用新式无服务器体系结构响应客户端连接的连接或断开连接。 为此,它无需复杂的代码或高价低效的轮询服务。 而是可以通过 Azure 事件网格向订阅方(如 Azure Functions、Azure 逻辑应用,或者甚至是你自己的自定义 HTTP 侦听器)推送事件。 如果使用 Azure SignalR,则只需为你使用的内容付费。
Azure SignalR 服务事件会可靠地发送到事件网格服务,该服务通过丰富的重试策略和死信传递向应用程序提供可靠的传递服务。 若要了解详细信息,请参阅事件网格消息传递和重试。
只有在客户端连接处于无服务器状态时,Azure SignalR 服务事件才处于活动状态。 如果客户端不路由到中心服务器,则它会进入无服务器状态。 仅当客户端连接连接到的中心没有中心服务器时,经典模式才适用。 建议最好使用无服务器模式。 若要了解服务模式的更多详细信息,请参阅如何选择服务模式。
事件网格使用事件订阅将事件消息路由到订阅方。 Azure SignalR 服务事件订阅支持两种类型的事件:
事件名称 | 描述 |
---|---|
Microsoft.SignalRService.ClientConnectionConnected |
建立客户端连接时出现。 |
Microsoft.SignalRService.ClientConnectionDisconnected |
断开客户端连接时出现。 |
Azure SignalR 服务事件包含响应数据中的更改所需的所有信息。 可以识别 Azure SignalR 服务事件,该事件的 eventType 属性以“Microsoft.SignalRService”开头。 关于事件网格事件属性使用情况的其他信息,请参阅事件网格事件架构文档。
下面是“客户端连接已连接”事件的示例:
[{
"topic": "/subscriptions/{subscription-id}/resourceGroups/signalr-rg/providers/Microsoft.SignalRService/SignalR/signalr-resource",
"subject": "/hub/chat",
"eventType": "Microsoft.SignalRService.ClientConnectionConnected",
"eventTime": "2019-06-10T18:41:00.9584103Z",
"id": "831e1650-001e-001b-66ab-eeb76e069631",
"data": {
"timestamp": "2019-06-10T18:41:00.9584103Z",
"hubName": "chat",
"connectionId": "crH0uxVSvP61p5wkFY1x1A",
"userId": "user-eymwyo23"
},
"dataVersion": "1.0",
"metadataVersion": "1"
}]
有关详细信息,请参阅 SignalR 服务事件架构。
详细了解事件网格并尝试使用 Azure SignalR 服务事件: