ASP.NET 核心应用程序中的 Azure SignalR 服务

Azure SignalR Service in ASP.NET Core App

我正在阅读有关 Azure SignalR 服务以及快速入门指南的非常有限的信息,希望确保我理解正确。

我们似乎还有 hub,如果我理解正确的话,Azure SignalR 服务的功能只是将消息推送到连接的客户端。

在我的例子中,我存储了聊天记录,因此通过先点击 hub,我仍然可以使用我的后端逻辑来保留聊天记录或进行我可能需要的任何其他处理。然后只需允许 Azure SignalR 服务将数据推送到连接的客户端。

主要的好处似乎是处理服务的扩展。

我做对了吗?

你没看错。

SignalR 尚未准备好投入生产(谈到 ASP.NET 核心时),ASP.NET MVC 的 SignalR 已经存在了一段时间(稳定)。

SignalR 由两部分组成:服务器和客户端。服务器正如您所描述的那样:一个 "hub" 可用于将信息推送给客户端。

在网页上加载一段生成的 javascript(从您的集线器定义自动生成)。基本上,您让您的网站访问者(客户端)通过 signalR 的机制连接到集线器(signalR 将根据浏览器选择正确的连接方式),然后 'subscribe' 到您在集线器中激活的不同方法。

工作原理很简单:无论何时您在中心调用代码(可以来自客户端,也可以来自后端代码),都会自动为您处理与所有订阅客户端的通信。

注意:如果您 运行 在 Azure 网络应用程序上使用此功能:启用 "always on" 设置,并将 "websockets" 开关设置为 "enabled",否则您会看到奇怪的行为。

注 2:signalR 核心 1.0 的 RC 版本刚刚发布(2018 年 5 月 7 日),因此可能需要一段时间才能通过 public nuget/npm频道。

是的,你完全正确。

您将使用与 ASP.NET 核心 SignalR 完全相同的 API 来编写您的业务逻辑,这意味着当来自客户端的消息到达您的中心时,您可以保留任何您想要的内容。

Azure SignalR 服务将成为您的应用服务器和连接的客户端之间的基础传输。例如,当你想向所有客户端广播消息时,你实际上只向 Azure SignalR 服务发送一条消息,该服务会为你向所有客户端广播该消息。这样您就不必担心横向扩展。 Azure SignalR 服务将为你处理扩展。