2013-11-20 19 views
1

我有一個Angular應用程序,其中某些路由偵聽某些SignalR消息,並且某些消息被多個路由偵聽。一切工作正常,但是當我從路由A導航到路由B時,路由A的SignalR事件處理函數仍然被觸發。我正在使用Angular服務來封裝SignalR集線器並跟蹤回調函數。我認爲只是重新設置每個路由更改的回調函數數組,但我覺得這不是正確的做法。考慮到應該只有一個集線器連接和特定於路由的事件處理,那麼執行此操作的適當方法是什麼?SignalR在Angular單頁面應用程序中偵聽事件的多個路由

角SignalR服務

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); 
    } 


}]); 

回答

相關問題