首页 > 解决方案 > 来自 WebAPI 控制器的 Signalr 集线器连接

问题描述

我有 2 个应用程序托管在 2 个不同的 Azure 机器中。一种是 Web 表单应用程序,另一种是 Web API 2.0 应用程序。两个应用程序共享一个公共 DLL(我们称之为 Data.DLL)。我在 Data.DLL 中实现了 Signal R HUB

在我的 Web 应用程序中,当我从 javascript 代码启动集线器时,Signal R 工作正常。

我还在 WebAPI 项目中添加了一个 Startup 类。

现在,我正在尝试向连接到 webform 应用程序的客户端传达消息,当我的 WebApp 中有任何其他 3rd 方客户端应用程序的 PUT 操作时。

所以在我的控制器类中,我尝试了这个:

                var ctxt = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<SignalRHub>();
                if (ctxt != null)
                {
                    try
                    { 
                        ctxt.Clients.Group("MyClients").HandleServerNotifications("Hello");
                    }
                    catch (Exception ex)
                    {
                        // do a thing
                    }
                }

但这不起作用,我也无法找到原因,因为无法调试。这有可能实现吗?

这是我在 Data.dll 中的 Signal R Hub 实现

导入 Microsoft.AspNet.SignalR

 Public Class SignalRHub
  Inherits Hub


 Public Overrides Function OnConnected() As Task 
     Dim id = Context.ConnectionId 
     Groups.Add(id , "MyClients")
     Return MyBase.OnConnected() 
 End Function


   Public Overrides Function OnDisconnected(stopCalled As Boolean) As Task 
        Return MyBase.OnDisconnected(stopCalled)
   End Function


   Public Overrides Function OnReconnected() As Task 
     Return MyBase.OnReconnected()
   End Function



    End Class

谢谢。

标签: c#asp.net-web-api2signalr

解决方案


推荐阅读