2017-04-16 6 views
0

ハブコンテキスト外で呼び出しメソッドを使用しようとしています。私はそうのようなすべてのユーザーにメッセージをブロードキャストするとき正常に動作ヘルパークラスを持っている:SignalR:ハブコンテキスト外の呼び出しメソッドの使用

hub.Clients.All.newLessonAlert(notif); 

それは私がこのクラス内の発信者の方法を使用することはできませんが、これはハブのコンテキストクラスで正常に動作します。どうしてこれなの?私はまた、コンテキストクラス内で私のすべての機能を移動しようとしたが、私は今、この処理できない例外を取得:HubPipelineによって作成されていないハブインスタンスを使用して

サポートされていない簡単な方法はあります私のヘルパークラスを引き続き使用し、ハブへの接続を識別するには?

答えて

1

私は、次の方法でこれを解決:

  1. 私は私のハブクラスのOnConnectedメソッドを作成しました。これにより、現在接続されているユーザーがグループに割り当てられました。

    [HubName("NotificationsHub")] 
    

    パブリッククラスNotificationHub:ハブ {プライベート静的IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext()。

    public override Task OnConnected() 
    { 
        string userid = Context.Request.User.Identity.GetUserId(); 
        Groups.Add(Context.ConnectionId, userid); 
        return base.OnConnected(); 
    } 
    

    }

  2. は今、私が渡しコントローラのアクションのために(ユーザーのIDによって指定された)現在接続しているユーザーに、このアラート

    public void HighScoreAlert(int gameid, int score, string userID) 
    { 
        string message = "High Score achieved on " + gameid; 
    
        hub.Clients.Group(userID).score(message); 
    } 
    
  3. を放送するために私のHubHelperクラスを変更ユーザーIDを入力して、上記のHubHelperメソッドを呼び出します。

が、これは誰か

を役に立てば幸い
関連する問題