私は MVC4 で SignalR を数週間使用してきましたが、簡単なセットアップに関してはほとんど成功しています。1 つのページ設定とハブを使用して、サーバーからすべてのクライアントにメッセージを送信するのに問題はありませんでした。
私が取り組んでいる現在のプロジェクトでは、グループを使用しようとしているので、クライアント接続を開始した後、そのようにサーバーに電話をかけようとします。
私の_Layout.cshtmlで
var dashboardhub;
$(document).ready(function () {
dashboardhub = $.connection.dashboardHub;
dashboardhub.client.connect = function () { };
window.hubReady = $.connection.hub.start();
});
私のIndex.cshtmlで
window.hubReady.done(function () {
dashboardhub.server.addGroup('@ViewContext.RouteData.Values["area"].ToString()');
}).fail(function () {
console.log('connection failed');
});
私の DashboardHub クラスで
public class DashboardHub : Hub {
/// <summary>
/// Constructor
/// </summary>
public DashboardHub() {
}
public void AddGroup(string group) {
this.Groups.Add(Context.ConnectionId, group);
}
}
クライアント側で dashboardhub.server.addGroup が起動されると、サーバー メソッド AddGroup にヒットすることはありません。これは明らかにグループの作成を困難にしています。
何かが欠けている可能性は非常に高いですが、それが何であるかは完全にはわかりません。任意のポインタは非常に高く評価されます。
編集:無意味な投稿で申し訳ありません。例外をスローしているハブ コンストラクターに何かがありましたが、それはほとんど明らかではありませんでした。投稿したコードには明らかに含まれていませんが、基本的には、コンストラクターで null のオブジェクトに PropertyChanged イベント ハンドラーを追加しました。これは基本的にハブ全体を壊し、サーバー呼び出しを許可しませんでした。