gpt4 book ai didi

javascript - 无法让分布式/不同的 Angular 站点与 WebAPI 中的 SignalR 进行对话

转载 作者:行者123 更新时间:2023-11-28 00:20:29 25 4
gpt4 key购买 nike

我对 SignalR 非常陌生,我正在尝试将其与 AngularJS 站点和 WebAPI 集成。我关注了伟大的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);
});

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

Console result when trying to connect to signalr

在我的代码中,您可以看到我正在尝试设置中心 URL(在其下方的注释中,我尝试手动设置连接对象的属性。)但是,在屏幕截图中您可以看到URL 或 baseURL 都不是我设置的那样,事实上,baseURL 仍然指向 http://127.0.0.1:60000/ 上的 Angular 站点。 ,而不是 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>

关于javascript - 无法让分布式/不同的 Angular 站点与 WebAPI 中的 SignalR 进行对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com