Я работал с SignalR с MVC4 в течение нескольких недель и по большей части добился успеха, когда дело доходит до простых настроек. У меня не было проблем с отправкой сообщений всем клиентам с сервера с настройками одной страницы и концентратором.
Текущий проект, над которым я работаю, я пытаюсь использовать группы, поэтому после запуска клиентского соединения я пытаюсь сделать вызов на сервер вот так.
в моем _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. Это, очевидно, затрудняет создание групп.
Вполне возможно, что я что-то упускаю, но я не совсем уверен, что это может быть. Любые указатели будут очень признательны.
РЕДАКТИРОВАТЬ: Извините за бессмысленный пост. В конструкторе хаба было что-то, что вызывало исключение, но это было очень незаметно. Очевидно, что этого нет в коде, который я разместил, но в основном я добавил обработчик события PropertyChanged для объекта, который был нулевым в конструкторе. Это фактически сломало весь хаб, который не разрешал вызовы сервера.