尝试连接跨域托管信号器服务时,signalR连接失败

时间:2015-09-20 21:37:50

标签: javascript angularjs cross-domain signalr signalr.client

我正在尝试在网站上使用signalR。 SignalR是一种自托管服务。 SignalR网址:http://localhost8080:/signalr

网站正在运行@ http://localhost:31775/

我在浏览器控制台上收到错误

  

GET   http://localhost:31775/signalr/negotiate?connectionData=%5B%5D&clientProtocol=1.3&_=1442784297380   404(未找到)

此错误告诉我下面的代码试图生成的代理是使用网站URL,即相对路径。但是我想使用我的signalR服务托管的绝对路径。

AngularJS Factory

app.factory("signalRService", ['$', '$rootScope', function ($, $rootScope) {
    var proxy;
    var connection;

    return {
        connect: function () {
            connection = $.hubConnection();
            proxy = connection.createHubProxy('myHub');
            connection.start();
            proxy.on('addMessage', function (tags) {
                $rootScope.$broadcast('addMessage', tags);
            });
        },
        send: function () {
            proxy.invoke('send');
        },
    };
}]);

我还为此添加了javascript参考。

<script src="js/jquery.signalR-2.0.3.min.js"></script>

验证我的自托管是否正在运行文件。我在浏览器上查看了http://localhost:8080/signalr/hub

enter image description here

1 个答案:

答案 0 :(得分:0)

您缺少的是代理的一些配置:

connection = $.hubConnection('http://localhost:8080/signalr');

如何推广这段代码(网址可能是您的connect方法的参数,或者适合您的Angular策略的参数)取决于您。