来自WebAPI Controller的Signalr集线器连接

时间:2018-08-04 09:16:35

标签: c# asp.net-web-api2 signalr

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

在我的Web App中,Signal R可以正常工作,因为我是从JavaScript代码启动集线器的。

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

现在,当我的WebApp认为其他任何第三方客户端应用程序进行PUT操作时,我正尝试将消息传递给连接到Webform应用程序的客户端。

因此,在我的控制器类中,我尝试了以下方法:

                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

谢谢。

0 个答案:

没有答案