コントローラからSignalRハブのメソッドを呼び出す良い方法はありますか?SignalRの現在のハブを取得する
StatsHub.Instance.SendMessage("blah");
例えば、
は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...
}
ので、私のコントローラのアクションで私は言うことができるとそのhubContextが発信者かを持っていないことを除いては、ほとんど良いことだ:
は、今のところ私はこれを持っていますハブのコンテキストプロパティ - 持っているといいです。
うまくいけば、これを行うより良い方法がありますか?
これはこれ以上機能しません(SignalR2では?)。 http://stackoverflow.com/questions/17896739/use-hub-methods-from-controllerを参照してください。 –
'DefaultHubManager'はSignalR 2.xに存在しますが、' hub.Context'はnullなので、すべての操作が失敗します。 – Dai
これはsignalR 2.0で動作しますが、例外が発生しますHubPipelineで作成されていないHubインスタンスを使用するとサポートされません – GreyCloud