DBからレコードを表示している新しいMVCアプリケーションがあり、新しいレコードを作成できます。 NservicebusのIEventハンドラが完了したときに、SignalRを使用してクライアントに通知しています。NServiceBusでイベントを処理する際に、SignalRがクライアント側の関数を呼び出さない
Index.cshtml
<script src="signalr/hubs" type="text/javascript"></script>
<script>
var myHub;
$(function() {
myHub = $.connection.userAccountHub;
//add handler to handle the nofication
myHub.testMsg = function() {
alert("I would really like for this to work");
};
$.connection.hub.start();
});
</script>
UserController.cs
public class UserController : Controller
{
private readonly IBus _bus;
public ActionResult Index()
{
return View(getalldata());
}
[HttpPost]
public ActionResult Create(CreateUserAccountModel user)
{
if (ModelState.IsValid)
{
_bus.Send(new CreateUserAccountCommand
{
FirstName = user.FirstName,
LastName = user.LastName,
NetworkLogin = user.NetworkLogin
});
return RedirectToAction("Index");
}
return View(user);
}
UserAccountHub
public class UserAccountHub : Hub
{
}
UserAccountCreatedNotifyEventHandler.cs
public class UserAccountCreatedNotifyEventHandler : IHandleMessages<UserAccountCreatedNotifyEvent>
{
public void Handle(UserAccountCreatedNotifyEvent message)
{
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<UserAccountHub>();
clients.testMsg();
}
}
は基本的に私はちょうど私のすべてのレコードを表示し、作成ボタンを持つindexアクションに進みます。作成ボタン@Html.ActionLink("Create", "Create", null, null)
をクリックし、public ActionResult Create(CreateUserAccountModel user)
メソッドを呼び出しました。バスを起動し、インデックスアクションにリダイレクトします。サービスバスはそのことを行い、UserAccountCreatedNotifyEventHandler Handle
メソッドが適切にトリガされます。
これは私がいくつかの問題を見るところです。メッセージをブロードキャストできるようにクライアントを取得するための適切なシグナルメソッドを呼び出しますが、クライアントはメッセージを受信しません。.testMsg()
私の短いシグナルでclients.testMsg
は期待通りに動作しません。私が知っている限り、私はWeb上で見つけたコード例、および私が持っている他のテストプロジェクトにも従っています。私は愚かな何かをやっていると仮定していますが、それを目標にしていません。
を試してみてください参照してください。 – Etch
私は同様のパターンを使用していますが、rabbitmqハンドラからは – redsquare
実際に問題の小さな問題を修正したNServicebusの設定に問題が見つかりました。奇妙なことは、私の上記のコードは初めてのことですが、その後はうまくいきません。私は掘り下げて.CreateProxyメソッドを試してみようとしています。 – Etch