使用Angularjs连接到signalr时出现404错误

时间:2016-11-30 17:32:24

标签: jquery asp.net angularjs signalr yeoman

大家好我正致力于基于此处的示例使用AngularJS实施SignalR股票代码。但我在连接到信号器时遇到错误 GET http://localhost:9000/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22stockticker%22%7D%5D&_=1480526019939 404(未找到)

这就是我的jquery文件中显示错误的地方:

try {

     // Do send the request (this may raise an exception)
     xhr.send( options.hasContent && options.data || null );
     } catch ( e ) {

    // #14683: Only rethrow if this hasn't been notified as an error yet
    if ( callback ) {
    throw e;
     }
     }

这是我的signalr-hub.js:

angular.module('SignalR', [])
.constant('$', window.jQuery)
.factory('Hub', ['$', function ($) {
    //This will allow same connection to be used for all Hubs
    //It also keeps connection as singleton.
    console.log("God help me");
    var globalConnections = [];

    function initNewConnection(options) {
        var connection = null;
        if (options && options.rootPath) {
            connection = $.hubConnection(options.rootPath, { useDefaultPath: false });
        } else {
            connection = $.hubConnection();
        }

        connection.logging = (options && options.logging ? true : false);
        return connection;
    }

    function getConnection(options) {
        var useSharedConnection = !(options && options.useSharedConnection === false);
        if (useSharedConnection) {
            return typeof globalConnections[options.rootPath] === 'undefined' ?
            globalConnections[options.rootPath] = initNewConnection(options) :
            globalConnections[options.rootPath];
        }
        else {
            return initNewConnection(options);
        }
    }

    return function (hubName, options) {
        var Hub = this;

        Hub.connection = getConnection(options);
        Hub.proxy = Hub.connection.createHubProxy(hubName);

        Hub.on = function (event, fn) {
            Hub.proxy.on(event, fn);
        };
        Hub.invoke = function (method, args) {
            return Hub.proxy.invoke.apply(Hub.proxy, arguments)
        };
        Hub.disconnect = function () {
            Hub.connection.stop();
        };
        Hub.connect = function (queryParams) {
            var startOptions = {};
            if (options.transport) startOptions.transport = options.transport;
            if (options.jsonp) startOptions.jsonp = options.jsonp;
            if (angular.isDefined(options.withCredentials)) startOptions.withCredentials = options.withCredentials;
            if(queryParams) Hub.connection.qs = queryParams;
            return Hub.connection.start(startOptions);
        };

        if (options && options.listeners) {
            Object.getOwnPropertyNames(options.listeners)
            .filter(function (propName) {
                    return typeof options.listeners[propName] === 'function';})
                .forEach(function (propName) {
                    Hub.on(propName, options.listeners[propName]);
                });
        }
        if (options && options.methods) {
            angular.forEach(options.methods, function (method) {
                Hub[method] = function () {
                    var args = $.makeArray(arguments);
                    args.unshift(method);
                    return Hub.invoke.apply(Hub, args);
                };
            });
        }
        if (options && options.queryParams) {
            Hub.connection.qs = options.queryParams;
        }
        if (options && options.errorHandler) {
            Hub.connection.error(options.errorHandler);
        }
        if (options && options.stateChanged) {
            Hub.connection.stateChanged(options.stateChanged);
        }

        //Adding additional property of promise allows to access it in rest of the application.
        if(options.autoConnect === undefined || options.autoConnect){
            Hub.promise = Hub.connect();    
        }

        return Hub;
    };
}]);

// Common.js package manager support (e.g. ComponentJS, WebPack)
if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.exports === exports) {
  module.exports = 'SignalR';
}

由于我是信号概念的新手,因此在其中有很多困惑。所以,任何人都可以帮助我解决这个问题。

0 个答案:

没有答案