我已经使用 MVC4 与 SignalR 合作了几个星期,并且在简单设置方面大部分都取得了成功。使用一页设置和集线器从服务器向所有客户端发送消息没有问题。
我正在处理的当前项目,我正在尝试使用组,所以在我启动客户端连接后,我尝试像这样调用服务器。
在我的 _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 事件处理程序。这基本上破坏了整个集线器,它不允许服务器调用。