我有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
谢谢。