我有一个 MVC 应用程序,我正在显示数据库中的记录,并且我能够创建新记录。当来自 Nservicebus 的 IEvent 处理程序完成时,我正在使用 SignalR 通知客户端。
索引.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>
用户控制器.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);
}
用户帐户中心
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
呼叫没有按预期运行。据我所知,我正在关注我在网上找到的代码示例,甚至是我拥有的其他测试项目。我假设我在做一些愚蠢的事情,但不能针对它。