【问题标题】:How to call SignalR Service method from web app service如何从 Web 应用服务调用 SignalR 服务方法
【发布时间】:2018-10-24 19:39:06
【问题描述】:

假设我有一个在 Azure Web App Service 上运行的企业应用程序。在 100 多个页面中,我有 3-5 个页面需要实时提供。为了从 Azure SignalR 服务的实时功能中受益,我想让客户端登陆我的 SignalR 应用程序(在 RignalR 服务上运行)。但我找不到任何相关的示例文章。如何在代码之外调用 Hub 方法?任何其他解决我的问题的方法都非常受欢迎。我主要关心的是实时页面的性能。

【问题讨论】:

  • 我不太明白你的问题。您是否正在寻找如何从应用中的某个位置(集线器之外)向客户端发送消息?
  • @AndrewStanton-Nurse 我实际上想知道,如何从集线器项目之外调用任何推送通知。我想发现这一点,因为我想从 Azure Web 应用服务和 Azure SignalR 服务中受益

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


【解决方案1】:

如果您有 ASP.NET Core SignalR 服务器(即,您的应用程序中有派生自 Hub 的类),则无法通过 Azure SignalR 服务直接向客户端发送消息。您必须在 ASP.NET Core 应用程序中提供一个 API 来执行此操作。

Azure SignalR 还支持“无服务器”模式,在这种模式下,服务器上根本没有 Hub。在该模型中,客户端直接连接到服务(而不是首先连接到您的应用程序),然后您可以使用 REST API 向这些客户端发送消息。这是一个相对较新的场景,因此没有很多文档。网上有一些关于这个主题的blog postsvideos,但文档不多。

如果您已经有一个 ASP.NET Core 应用程序,我建议您通过向您自己的应用程序添加一个 REST API 来执行此操作,该 API 允许您应用程序中的其他服务通过调用此 API 来发送消息。在此 API 的实现中,您可以使用IHubContext<T> 发送消息。

【讨论】:

  • 是的,我已经有一个 Net-Core 应用程序并且我知道 IHubContext。看起来很花哨,但我主要关心的是 Azure 服务的性能/成本效率。我怀疑 Azure Web 服务是否可以像 SignalR 服务一样舒适地处理这么多实时客户端。你有什么想法吗?
  • 你说得对,Azure Web Apps 对并发实时客户端有限制。如果你使用 Azure SignalR,这不是问题。您可以将应用逻辑(包括 SignalR 集线器)部署到 Azure Web 应用,并使用 Azure SignalR 服务来卸载实时流量。这是在 Azure Web 应用程序上构建 SignalR 应用程序的推荐方法(Azure SignalR 文档中对此进行了描述:azure.microsoft.com/en-us/services/signalr-service
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
相关资源
最近更新 更多