这是我在后端的信号器
public class ChatHub : Hub
{
public void AddMessage(string userName, string message)
{
Clients.All.receivedNewMessage(userName, message);
}
}
和前端
app.controller('chatController', ['$scope', function ($scope) {
var _message = function(id, message, username, date)
{
// this.id = id;
this.message = message;
this.username = username;
// this.date = date;
}
$scope.username = "test";
$scope.message = "";
$scope.messages = [];
//auto proxy start
$.connection.hub.url = "http://localhost:*****/signalr/";
var myChatHub = $.connection.chatHub;
$.connection.hub.logging = true;
myChatHub.client.receivedNewMessage = function (username, message) {
var newMessage = new _message( name, message);
$scope.messages.push(_message);
$scope.$apply();
};
$.connection.hub.start().done(function () {
$scope.addMessage = function () {
myChatHub.server.addMessage($scope.username, $scope.message);
};
});
}]);
和libs
<script src="scripts/jquery-3.1.0.js"></script>
<script src="scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="http://localhost:*****/signalr/hubs"></script>
我在chrome上使用了网络工具,一切看起来都不错。我调试了js,并在jquery.signalR-2.2.1.min.js上显示了它:
SignalR:必须先启动连接才能发送数据。呼叫 .start()之前.send()
我不知道如何解决它
答案 0 :(得分:0)
变化:
$.connection.hub.start().done(function () {
$scope.addMessage = function () {
myChatHub.server.addMessage($scope.username, $scope.message);
};
});
要:
$scope.addMessage = function () {
myChatHub.server.addMessage($scope.username, $scope.message);
};
$.connection.hub.start().done(function () {
$scope.addMessage($scope.username, $scope.message);
});
函数声明不应存在于start().done
上下文中。