У меня есть приложение MVC, которое я показываю записи из БД, и я даю возможность создать новую запись. Я использую SignalR для уведомления клиентов, когда обработчик IEvent из Nservicebus завершен.SignalR не вызывает функцию на стороне клиента при обработке события в NServiceBus
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
запускается соответствующим образом.
Здесь я начинаю видеть некоторые проблемы. Я вызываю соответствующие методы signalr, чтобы получить клиентов, чтобы я мог транслировать сообщение .testMsg()
, однако клиенты не получают сообщение.
Итак, короткое замыкание сигнала signal clients.testMsg
не работает должным образом. Насколько я знаю, я следую примерам кода, которые я нашел в Интернете, и даже другим тестовым проектам, которые у меня есть. Я предполагаю, что я делаю что-то глупое, но просто не могу его нацелить.
Я даю, что попробовать. – Etch
Я использую аналогичный шаблон, но из обработчиков rabbitmq – redsquare
Я действительно нашел проблему с моей конфигурацией NServicebus, которая немного устранила проблему. Сейчас все странно, что мой выше код работает в первый раз, но не работает после. Я готов к работе и попробовать метод .CreateProxy. – Etch