【问题标题】:Azure SignalR Service in ASP.NET Core AppASP.NET Core 应用中的 Azure SignalR 服务
【发布时间】:2018-05-09 16:25:19
【问题描述】:

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

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

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

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

我说对了吗?

【问题讨论】:

    标签: azure asp.net-core signalr signalr-service


    【解决方案1】:

    是的,你完全正确。

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

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

    【讨论】:

    • 谢谢。假设 Azure SignalR 服务还使我能够推送到某些组是否安全?所以不是广播,而是广播到一个组场景。
    • @Sam 是的。 SignalR 有组的概念。您可以将客户端添加到任何组并仅向特定组发送消息。
    • 太棒了!因此,无论我是在应用程序中本地使用 SignalR 还是使用 Azure SignalR 服务,行为本质上都没有区别。
    • @Sam 正确!您可以使用 ASP.NET Core SignalR 进行本地开发,并在部署到 Azure 时轻松迁移到 Azure SignalR 服务。
    • 我有一个关于 JavaScript 文件的后续问题。它们是由 Azure SignalR 服务而不是我的应用程序提供的吗?我认为用户本质上是连接到 Azure SignalR 服务以获取实时内容,而不是连接到我的应用程序。我认为我的应用程序继续提供所有其他功能,集线器充当 SignalR 服务的管道,但所有实时内容都由服务而不是我的应用程序推送。这就是为什么我认为 JS 文件是由服务而不是我的应用程序提供的。这就是它的工作原理吗?
    【解决方案2】:

    你没看错。

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

    SignalR 由两部分组成:服务器和客户端。服务器就像您描述的那样:一个“集线器”,您可以使用它来将信息推送到客户端。

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

    工作原理很简单:每当您调用集线器中的代码(可以来自客户端,或来自后端代码)时,系统都会自动为您处理与所有订阅客户端的通信。

    注意:如果您在 azure web 应用程序上运行此程序:启用“始终开启”设置,并将“websockets”切换设置为“启用”,否则您会看到奇怪的行为。

    注意 2:signalR core 1.0 的 RC 版本刚刚发布(2018 年 5 月 7 日),因此该软件可能需要一段时间才能开始稳定并通过公共 nuget/npm 渠道提供。

    【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2018-12-10
    • 2018-05-19
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多