“无法使用 SignalR 读取未定义的 属性 'client'”angularJS
“Cannot read property 'client' of undefined” angularJS with SignalR
我是 signalR 的新手。我正在做的是创建一个简单的应用程序,它将名称添加到数据库并显示给客户端,但我收到一个错误 "Cannot read property 'client' of undefined"
这是我的 angularJS 代码
myApp.controller('firstController', function ($scope, $http) {
$scope.saveName = function () {
$http.post("/Name/saveName/", { userName: $scope.name }).then(function (response) {
$scope.loadNames();
})
}
$scope.loadNames = function () {
$http.get("/Name/getName/").then(function (response) {
$scope.nameList = response.data;
})
}
$scope.loadNames();
$scope.hub = $.connection.myHub;
$scope.notify = function () {
$scope.hub.client.UserAddHub = function (name) {
$scope.$apply(function () {
$scope.nameList.push(name);
})
}
$.connection.hub.start();
}
$scope.notify();
});
这是我在服务器端写的
private static IHubContext userHubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
operations op = new operations();
op.save(userName);
userHubContext.Clients.All.UserAddHub(userName);
这是我的 hubclass
[HubName("myHub")]
public class MyHub : Hub
{
}
我是不是漏掉了什么。有什么建议吗?谢谢。
在您的 $scope.hub 行之后添加:
$scope.hub.client = {};
还注意到你调用了 $.connection.myHub;然后稍后你在 $.connection.hub 上调用 start() 方法......应该是 $.connection.myHub.start();或者应该是 $scope.hub.start(); ?
如果您使用外部脚本加载 signalR,请确保在您的 Layout.cshtml(或您正在使用的任何其他布局)中添加了此引用
<script src="~/signalr/hubs"></script>
在添加 signalR 之后。代码似乎没有任何问题,我只能看到你的中心是空的。
编辑: 对于未来的读者,请仔细检查您是否也将 app.MapSignalR();
添加到 Startup.cs class.
我是 signalR 的新手。我正在做的是创建一个简单的应用程序,它将名称添加到数据库并显示给客户端,但我收到一个错误 "Cannot read property 'client' of undefined" 这是我的 angularJS 代码
myApp.controller('firstController', function ($scope, $http) {
$scope.saveName = function () {
$http.post("/Name/saveName/", { userName: $scope.name }).then(function (response) {
$scope.loadNames();
})
}
$scope.loadNames = function () {
$http.get("/Name/getName/").then(function (response) {
$scope.nameList = response.data;
})
}
$scope.loadNames();
$scope.hub = $.connection.myHub;
$scope.notify = function () {
$scope.hub.client.UserAddHub = function (name) {
$scope.$apply(function () {
$scope.nameList.push(name);
})
}
$.connection.hub.start();
}
$scope.notify();
});
这是我在服务器端写的
private static IHubContext userHubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
operations op = new operations();
op.save(userName);
userHubContext.Clients.All.UserAddHub(userName);
这是我的 hubclass
[HubName("myHub")]
public class MyHub : Hub
{
}
我是不是漏掉了什么。有什么建议吗?谢谢。
在您的 $scope.hub 行之后添加:
$scope.hub.client = {};
还注意到你调用了 $.connection.myHub;然后稍后你在 $.connection.hub 上调用 start() 方法......应该是 $.connection.myHub.start();或者应该是 $scope.hub.start(); ?
如果您使用外部脚本加载 signalR,请确保在您的 Layout.cshtml(或您正在使用的任何其他布局)中添加了此引用
<script src="~/signalr/hubs"></script>
在添加 signalR 之后。代码似乎没有任何问题,我只能看到你的中心是空的。
编辑: 对于未来的读者,请仔细检查您是否也将 app.MapSignalR();
添加到 Startup.cs class.