“无法使用 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.