未让 distributed/disparate Angular 站点与 WebAPI 中的 SignalR 对话

Not getting distributed/disparate Angular site to talk to SignalR in WebAPI

我对 SignalR 很陌生,我正在尝试将它与 AngularJS 站点和 WebAPI 集成。我按照 greate this 示例开始。但是,正如我所提到的,我正在处理的网站将与 WebAPI 项目位于不同的服务器上。

在我的开发环境中,我为 Angular 设置了一个本地站点,托管在 localhost:60000/127.0.0.1:60000 上的 IIS 中,WebAPI 位于 localhost:31374(位于VS2013,使用 IIS Express。)这是为了模拟项目将运行的 2 个不同的服务器。

在我的 Angular 项目中,我尝试通过执行以下操作连接到 SignalR 集线器:

var connection = $.hubConnection();

$.connection.hub.url = "http://localhost:31374/signalr";

//$.connection.url = "/signalr";
//$.conenction.baseUrl = "http://localhost:31374";

this.proxy = connection.createHubProxy('foos');

console.clear();
// start connection
console.log(connection);
connection.start();

this.proxy.on('newFoo', function (data) {
    $rootScope.$emit("newFoo", data);
});

控制台中的结果如下所示:

在我的代码中,您可以看到我正在尝试设置集线器 url(并且在其正下方的注释中,我已尝试手动设置连接对象的属性。)但是,在截图你可以看到 URL 和 baseURL 都不是我设置的,事实上 baseURL 仍然指向 Angular 站点http://127.0.0.1:60000/, in stead of http://localhost:31374/.

我错过了什么?

这个设置看起来有点不对劲。具体来说,也许您的 connection.start() 调用不正确。我已经在 Angular 中使用具有以下设置的跨域服务器完成了此操作

var proxy;

$(function () {

    $.connection.hub.url = 'http://localhost:31374/signalr';

    $.connection.hub.start({ xdomain: true })
        .done(function () { 
            console.log('Connected. connectionId : ' + $.connection.hub.id); 
        })
        .fail(function () {
            console.log('Could not connect!');
        });

    proxy = $.connection.yourServerHubName;

    proxy.client.yourClientHubMethod = function () {
        // your client hub functions
    };
});

另外请务必检查您是否在 HTML

中加载了正确生成的 .js 文件
<script src="//localhost:31374/signalr/hubs"></script>