我有一個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);
}
}]);