在WebApi和MVC项目之间共享SignalR中心

dou*_*ald 15 signalr asp.net-web-api signalr-hub

是否有推荐的方法在两个应用程序之间共享SignalR集线器?

实际情况是面向公众的WebAPI项目和内部MVC WebApp.我想做的是从WebAPI项目调用SignalR集线器上的方法,并将这些方法的结果推送到通过MVC应用程序连接的客户端.

最好的选择是创建第三个"Hub"项目并让两个项目连接到那个项目吗?如果是这样,如何管理集线器实例?两个应用程序是否可以从不同的应用程序池(以及可能的主机)获取对同一集线器的引用?

我读了一下GlobalHost.ConnectionManager.GetHubContext,这是否足以让两个应用程序都可以使用一个有效的单例集线器?

任何想法都非常感激.

Sof*_*ion 4

只需通过 SQL Server 表设置信号器消息路由即可。它将使用相同的路由设置自动连接所有集线器。没什么可做的,这就是魔法。

GlobalHost.DependencyResolver.UseSqlServer(ConfigurationManager.ConnectionStrings["signalr"].ConnectionString);
Run Code Online (Sandbox Code Playgroud)

您将需要以下 nuget 包:Microsoft.AspNet.SignalR.SqlServer