2017-01-09 3 views
1

У меня есть некоторые трудности с использованием SignalR с angularjs (1.5.6)angularjs signalr - Устраните метод сервера

Я использую следующие библиотеки: Https://github.com/JustMaier/angular-signalr-hub

У меня есть следующий завод, который должен поддерживать SignalR.

'use strict'; 
app.factory('commonFactory', commonFactory); 

commonFactory.$inject = ['$rootScope', 'Hub', '$log']; 

function commonFactory($rootScope, Hub, $log) { 
    var scope = $rootScope; 

    scope.hub = { 
     instance : {}, 
     isReady : false 
    }; 

    var _listeners = { 
     'login': function (message) { 
      $log.log(message); 
      $rootScope.$apply(); 
     } 
    }; 
    var _methods = ['connect', 'sendMessage']; 

    var _errorHandler = function (error) { 
     console.error(error); 
    }; 

    var _hub = new Hub('message', { methods: [] }) 
    .promise.done(function() { 
     _hub.listeners = _listeners; 
     _hub.methods = _methods; 
     _hub.errorHandler = _errorHandler; 

     scope.hub.isReady = true; 
     scope.hub.instance = _hub; 
    }); 
} 

В мой контроллер, я использую свой завод:

app.controller('loginController', loginController); 

loginController.$inject = ['$scope', 'commonFactory']; 

function loginController($scope, commonFactory) { 
    $scope.login = _login; 


    $scope.model = { 
     user : { 
      id : 1 
     } 
    } 

    function _login() { 
     commonFactory.hub.instance.connect($scope.model.user.id); 
    } 
} 

Следующая строка с ошибкой: commonFactory.hub.instance.connect ($ scope.model.user.id);

Он говорит:

commonFactory.hub.instance.connect не является функцией

Как разрешить серверные методы (написанный в C#)

Интерфейс:

public interface IMessageHub 
{ 
    [HubMethodName("login")] 
    void Login(object message); 

    [HubMethodName("send")] 
    void Send(object message); 

    [HubMethodName("connect")] 
    void Connect(Guid userGuid); 

} 

Заранее благодарен

ответ

0

Я фикс с ним:

'использовать строгий';

app.factory ('commonFactory', commonFactory);

commonFactory. $ Inject = ['$ rootScope', 'Hub', '$ log'];

функция commonFactory ($ rootScope, Hub, $ log) { var scope = $ rootScope;

var instance = { };

var hub = new Hub('message', { 
    listeners: { 
     'login': function (from, to, message) { 
      $log.log(message); 
      $rootScope.$apply();; 
     } 
    }, 

    //server side methods 
    methods: ['connect', 'sendMessage'], 

    //handle connection error 
    errorHandler: function (error) { 
     console.error(error); 
    } 
}); 

var _login = function (userGuid) { 
    hub.promise.done(function() { 
     hub.login(userGuid); //Calling a server method 
    }); 
}; 

instance.login = _login;  return instance; }