私はSignalR2を使用しています。コントローラの動作の中から、どのように私のハブの方法を使うことができるのか分かりません。コントローラのHubメソッドを使用しますか?
私は、次の操作を行うことができます知っている:
var hub = GlobalHost.ConnectionManager.GetHubContext<T>();
hub.Clients.All.clientSideMethod(param);
しかし、それはクライアント側で直接メソッドを実行します。
サーバー側にビジネスロジックがある場合はどうすればいいですかClientSideMethod(param)
メソッドクライアント側から呼び出されたときと同じ方法でコントローラから呼び出したいのですが?
現時点では私のハブの内部にpublic static void ClientSideMethod(param)
を使用しており、この方法ではConnectionManager
のIHubContext
を使用しています。
これを行う方がいいですか?
機能していない、次の(SignalR 2にもはや?):あり
var hubManager = new DefaultHubManager(GlobalHost.DependencyResolver);
instance = hubManager.ResolveHub(typeof(T).Name) as T;
instance.ClientSideMethod(param);
私はクライアントにアクセスするときに例外を、「ハブはハブのパイプラインがサポートされていない経由で作成されていません」を取得。
私はJSであると仮定し、クライアントからそれをしないのはなぜ、あなたはAjaxリクエストを行うと、あなたは、コントローラ – MEYWD
@MEYWDに必要なものを行うことができます。たとえば、私は何かが起こったときに私が更新したいadminインターフェースを持っているからです。例えば。クライアントは特定のページを訪問するので、そのページからコントローラーアクションでハブメソッドをトリガーしたいと思います。実際のクライアントはそれを気にしないので、なぜ彼はそのメッセージを投稿すべきですか? – ChrFin
私は何か似たようなことをしました。私はクライアントと管理者(特別なクライアント)を持っています。管理者はコマンドを送信し、クライアントからの応答を待ちます。私は管理者のリストとハブ管理者はクライアントを選択し、他の管理者がそれを使用しないように予約し、コマンドを送信し、ハブがクライアントに中継し、クライアントはハブに応答を返し、応答は中継者に中継され、応答が印刷される画面は – MEYWD