javascript - 具有多个路由监听事件的 Angular 单页应用程序中的 SignalR

标签 javascript angularjs signalr

我有一个 Angular 应用程序,其中某些路由监听某些 SignalR 消息,而某些消息由多个路由监听。一切正常,但是当我从路由 A 导航到路由 B 时,路由 A 的 SignalR 事件处理函数仍在被触发。我正在使用 Angular 服务来包装 SignalR 集线器并跟踪回调函数。我考虑过在每次路由更改时重置回调函数数组,但我觉得这不是正确的方法。鉴于应该只有一个集线器连接和特定于路由的事件处理,执行此操作的适当方法是什么?

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 组合的重构:https://stackoverflow.com/a/19498009/100776

关于javascript - 具有多个路由监听事件的 Angular 单页应用程序中的 SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20102895/

相关文章:

c# - SignalR C# 客户端 407 需要代理身份验证

c# - 使用带有 MVC4 的高级集线器 api 的 SignalR 错误 - "/echo/negotiate 404 Not Found Error"

jquery - SignalR 1.0.1 使用 Chrome 的跨域请求 (CORS)

javascript - react native + 终极版 : How to render <ListView/> upon clicking a button?

javascript - 移动动态创建的 JavaScript 按钮

javascript - 如何在 Node.js 中使用异步函数返回的数据?

javascript - AngularJS Rest GET 请求不起作用

javascript - 以随机时间间隔添加随机数

javascript - ExtJS 4.2.2 组合框字段显示在窗口后面

javascript - 如何在 Angular js中使用滚动条打印iframe内容