1
這裏接收任何角度的方法是我的樞紐代碼:爲什麼我無法從signalr
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
namespace Voting.Hubs
{
public class VotingHub: Hub
{
private static readonly IHubContext HubContext = GlobalHost.ConnectionManager.GetHubContext<VotingHub>();
public override Task OnConnected()
{
Groups.Add(Context.ConnectionId, Context.Request.Url.Host);
return base.OnConnected();
}
public static void SendVotingResults(string channel, string content)
{
HubContext.Clients.Group(channel).votingResultMessage(content);
}
}
}
我把這個從我的API是這樣的:
VotingHub.SendVotingResults(Request.Headers["Host"], GenerateJson(result));
在角度,我有以下工廠:
app.factory('backendHubProxy', ['$rootScope',
function ($rootScope) {
function backendFactory(hubName) {
var host = window.location.protocol + '//' + window.location.hostname;
var connection = $.hubConnection(host);
var proxy = connection.createHubProxy(hubName);
connection.start().done(function() { });
return {
on: function (eventName, callback) {
proxy.on(eventName, function (result) {
$rootScope.$apply(function() {
if (callback) {
callback(result);
}
});
});
}
};
};
return backendFactory;
}]);
然後在我的角度控制器我使用這個代碼來設置它:
var votingHub = backendHubProxy('votingHub');
votingHub.on('votingResultMessage', function (data) {
console.log(data);
});
的 「Hub.OnConnect」 似乎並沒有被調用,即使我的開發工具日誌
/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=9BlaqaLwJnMVduhWpMeQ0H0k0R5gV7rrHCQEdn5IV0KRRyRRD5C83v2AGQPXPzCLtMdAy5Tbus416oHgK%2FuAtPZYDRtiJw51reJKuq1kOcHu%2F5Hp9krbq1VmT8eZekjd&connectionData=%5B%5D&tid=0
/signalr/start?transport=webSockets&clientProtocol=1.5&connectionToken=9BlaqaLwJnMVduhWpMeQ0H0k0R5gV7rrHCQEdn5IV0KRRyRRD5C83v2AGQPXPzCLtMdAy5Tbus416oHgK%2FuAtPZYDRtiJw51reJKuq1kOcHu%2F5Hp9krbq1VmT8eZekjd&connectionData=%5B%5D&_=1490614124062
的最後一次通話的迴應是:{ 「響應」: 「開始」}
調用SendVotingResults在服務器上工作得很好,但客戶端永遠不會收到任何東西。
我在做什麼錯?