Signalr 你如何在信号机3中获得背景信息?

Signalr 你如何在信号机3中获得背景信息?,signalr,Signalr,在SignalR 2中,您可以这样做(摘自我的博客): var stockTickerHub=GlobalHost.ConnectionManager.GetHubContext(); 这允许您从中心外部获取对信号器中心的引用(例如,从股票代码线程) 这似乎在信号机3中不可用。如何在新的和即将推出的SignalR中实现等效功能?从我看到的每个示例和我实现的几个SignalR 3应用程序中,您不再有对中心的强类型引用。当前的方法通过中心的名称和URL连接到中心。On泛型方法创建对来自该中心的广播

在SignalR 2中,您可以这样做(摘自我的博客):

var stockTickerHub=GlobalHost.ConnectionManager.GetHubContext();
这允许您从中心外部获取对信号器中心的引用(例如,从股票代码线程)


这似乎在信号机3中不可用。如何在新的和即将推出的SignalR中实现等效功能?

从我看到的每个示例和我实现的几个SignalR 3应用程序中,您不再有对中心的强类型引用。当前的方法通过中心的名称和URL连接到中心。On泛型方法创建对来自该中心的广播的订阅以及您提供的方法名称

HubConnection connection = new HubConnection(ServerURL); 
IHubProxy hubProxy = connection.CreateHubProxy("StockTickerHub"); 
hubProxy.On<StockTickerMessage>("[Your method name here]", msg => {
    //your UI update logic here 
});
HubConnection连接=新的HubConnection(ServerURL);
IHubProxy-hubProxy=connection.CreateHubProxy(“StockTickerHub”);
在(“[此处的方法名称]”上,msg=>{
//您的UI更新逻辑在这里
});

我向
signer
的创建者David Fowler on问了同样的问题,在这个论坛上,signer的创建者和
ASP.NET 5
的架构师们不时会坚持下去,而他对这个问题的回答是使用
依赖注入

虽然我还没有用
signar3
尝试过它,但我很确定您可以在类中插入实现
IConnectionManager
ConnectionManager
实例,并像使用
GlobalHost
解析中心上下文一样使用它

同样,我还没有使用
signal3
完成此操作,但我希望这将使您更接近于找到解决方案

我使用
Autofac
在我的hub中注入依赖项,也在其他类中注入
ConnectionManager
的实例以获取hub上下文)


希望这有帮助。祝你好运

依赖注入确实是一种方法,而且行之有效

例如:

公共类ChatController:控制器
{
只读IConnectionManager\u connectionManager;
公共聊天室控制器(IConnectionManager连接管理器)
{
_connectionManager=connectionManager;
}
公共IActionResult聊天(字符串消息)
{
IHubContext上下文=_connectionManager.GetHubContext();
IConnection connection=\u connectionManager.GetConnectionContext().connection;
context.Clients.All.NewMessage(message);
返回新的EmptyResult();
}
}
HubConnection connection = new HubConnection(ServerURL); 
IHubProxy hubProxy = connection.CreateHubProxy("StockTickerHub"); 
hubProxy.On<StockTickerMessage>("[Your method name here]", msg => {
    //your UI update logic here 
});