Javascript 不让分布式/完全不同的角度站点与WebAPI中的信号器通信
我对SignalR非常陌生,我正在尝试将它与AngularJS站点和WebAPI集成。我从最伟大的例子开始。但是,正如我所提到的,我正在开发的网站将位于WebAPI项目的另一台服务器上 在我的开发环境中,我使用IIS Express为Angular设置了一个本地站点,该站点位于localhost:60000/127.0.1:60000上的IIS中,WebAPI位于VS2013中的localhost:31374上。这是为了模拟项目将使用的两个不同服务器 在我的Angular项目中,我尝试通过以下操作连接到信号器集线器:Javascript 不让分布式/完全不同的角度站点与WebAPI中的信号器通信,javascript,angularjs,asp.net-web-api,signalr,Javascript,Angularjs,Asp.net Web Api,Signalr,我对SignalR非常陌生,我正在尝试将它与AngularJS站点和WebAPI集成。我从最伟大的例子开始。但是,正如我所提到的,我正在开发的网站将位于WebAPI项目的另一台服务器上 在我的开发环境中,我使用IIS Express为Angular设置了一个本地站点,该站点位于localhost:60000/127.0.1:60000上的IIS中,WebAPI位于VS2013中的localhost:31374上。这是为了模拟项目将使用的两个不同服务器 在我的Angular项目中,我尝试通过以下操
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仍然指向上的角度站点,而不是
我错过了什么?这个设置看起来有点不对劲。具体来说,您的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>
您正在设置$.connection上的hub.url,而不是本地连接变量。你是说connection.hub.url=http://localhost:31374/signalr?Thanks 萨尔,行得通。不过我很好奇-我注意到了xdomain,这是最大的区别吗?@mrthresday我猜在你的情况下不是。我真的认为这是你的客户端连接方式。开始设置。但是,我将该值作为备用值包括在内,以防您使用的是旧版本的signalr。有关更多详细信息,请参阅。很高兴它对你有用