Javascript 具有多条路由侦听事件的角度单页应用程序中的信号器

Javascript 具有多条路由侦听事件的角度单页应用程序中的信号器,javascript,angularjs,signalr,Javascript,Angularjs,Signalr,我有一个角度应用程序,其中某些路由侦听某些信号器消息,而某些消息由多个路由侦听。一切正常,但当我从路由A导航到路由B时,路由A的信号器事件处理程序函数仍在启动。我正在使用Angular服务包装信号器集线器并跟踪回调函数。我曾考虑过在每次路由更改时重新设置回调函数数组,但我觉得这不是正确的方法。如果只有一个集线器连接和特定于路由的事件处理,那么适当的方法是什么 角信号机业务 app.factory('SignalRService', [function () { var eventCal

我有一个角度应用程序,其中某些路由侦听某些信号器消息,而某些消息由多个路由侦听。一切正常,但当我从路由A导航到路由B时,路由A的信号器事件处理程序函数仍在启动。我正在使用Angular服务包装信号器集线器并跟踪回调函数。我曾考虑过在每次路由更改时重新设置回调函数数组,但我觉得这不是正确的方法。如果只有一个集线器连接和特定于路由的事件处理,那么适当的方法是什么

角信号机业务

app.factory('SignalRService', [function () {

    var eventCallbacks = [];

    var entityHub = $.connection.entityHub;

    entityHub.client.event = function (payload) {
        angular.forEach(eventCallbacks, function (callback, idx) {
            callback(payload);
        });
    };

    $.connection.hub.start({ transport: 'longPolling' })
        .done(function () {  })
        .fail(function () {  });

    return {
        subscribeToEvent: subscribeToEvent
    };

    function subscribeToEvent(callback) {
        eventCallbacks.push(callback);
    }


}]);

最佳解决方案看起来像是使用
$rootScope.$on
$emit
组合的重构:

我在这里找到了一个使用
$on
$emit
的好例子:

目前正在尝试找到更好的方法来注入$.connection或集线器代理依赖项