【问题标题】:signalR connection failing when trying to connect with cross domain hosted signalr service尝试连接跨域托管信号器服务时,signalR 连接失败
【发布时间】:2015-09-21 17:34:32
【问题描述】:

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

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

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

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

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

AngularJS 工厂

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

【问题讨论】:

  • 您是否在 signalR 服务器 OWIN 设置中启用了 CORS?

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


【解决方案1】:

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

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

如何概括那段代码(url 可以是您的 connect 方法的参数,或者任何适合您的 Angular 策略)取决于您。

【讨论】:

    猜你喜欢
    • 2014-10-03
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2016-08-23
    • 2015-05-26
    • 1970-01-01
    • 2015-03-16
    相关资源
    最近更新 更多