C'è un buon modo per chiamare i metodi nell'hub SignalR da un controller?Ottenere l'hub corrente in SignalR
In questo momento ho questo:
public class StatsHub : Hub
{
private static readonly Lazy<StatsHub> instance = new Lazy<StatsHub>(() => new StatsHub());
public static StatsHub Instance { get { return instance.Value; } }
public StatsHub()
{
if (this.Clients == null)
{
var hubContext = SignalR.GlobalHost.ConnectionManager.GetHubContext<StatsHub>();
this.Clients = hubContext.Clients;
this.Groups = hubContext.Groups;
}
}
// methods here...
}
così nelle mie azioni di controller posso solo dire, per esempio
StatsHub.Instance.SendMessage("blah");
ed è quasi buono, tranne che hubContext non ha chiamante o Proprietà del contesto di Hub - che sono belle da avere.
Speriamo, c'è un modo migliore per farlo?
Questo non funziona più (in SignalR 2?). Vedi http://stackoverflow.com/questions/17896739/use-hub-methods-from-controller. –
'DefaultHubManager' esiste in SignalR 2.x tuttavia' hub.Context' è nullo, quindi tutte le operazioni falliscono. – Dai
funziona in signalR 2.0 ma ottengo un'eccezione L'uso di un'istanza Hub non creata da HubPipeline non è supportato – GreyCloud