Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不让分布式/完全不同的角度站点与WebAPI中的信号器通信_Javascript_Angularjs_Asp.net Web Api_Signalr - Fatal编程技术网

Javascript 不让分布式/完全不同的角度站点与WebAPI中的信号器通信

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项目中,我尝试通过以下操

我对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。有关更多详细信息,请参阅。很高兴它对你有用