我想在SignalR和AngularJS中进行实时聊天

时间:2017-04-29 06:39:35

标签: javascript signalr

尝试使用SignalR发送消息时出现以下错误:

  

TypeError:$ scope.chatHub.server.SendMessageToAdmin不是函数

此功能发生错误:

vm.sentUserMsg = function (message) {
    var userName = 'Guest';
    $scope.name = 'Guest'; // holds the user's name
    $scope.message = ''; // holds the new message
    $scope.messages = []; // collection of messages coming from server
    $scope.chatHub = null; // holds the reference to hub
    $scope.chatHub = $.connection.chatHub; // initializes hub
    $.connection.hub.start(); // starts hub
    $scope.chatHub.client.broadcastMessage = function (name, message) {
        var newMessage = name + ' says: ' + message;
        $scope.messages.push(newMessage);
        $scope.$apply();
    };
    var producttype = '1';
    $scope.chatHub.server.SendMessageToAdmin(userName, message, producttype);
    $scope.message = '';
}

1 个答案:

答案 0 :(得分:0)

我打算猜测你有一个“SendMessageToAdmin”方法的套管问题。

我假设您遵循常见约定,并且位于Hub类中的服务器上的SendMessageToAdmin方法以大写“S”开头。请注意,当SignalR生成Javascript代理时,它会更改方法名称的大小以匹配Javascript约定。因此,您的javascript代码中的方法名称应该是camelCased。例如:

$scope.chatHub.server.sendMessageToAdmin(userName, message, producttype);

相关文档为here

具体来说,这是引用:

  

在Hub上传入方法名称的驼峰版本。 SignalR   自动进行此更改,以便JavaScript代码可以符合   JavaScript惯例。