Saya memiliki aplikasi Angular di mana rute tertentu mendengarkan pesan SignalR tertentu dan beberapa pesan didengarkan oleh beberapa rute. Semuanya berfungsi dengan baik tetapi ketika saya menavigasi dari Rute A ke Rute B, fungsi pengendali Rute A untuk peristiwa SignalR masih diaktifkan. Saya menggunakan layanan Angular untuk menggabungkan hub SignalR dan melacak fungsi panggilan balik. Saya mempertimbangkan untuk menyetel ulang rangkaian fungsi panggilan balik pada setiap perubahan rute, tetapi saya merasa itu bukan cara yang tepat untuk melakukan ini. Mengingat seharusnya hanya ada satu koneksi hub dan penanganan kejadian khusus rute, apa cara yang tepat untuk melakukan ini?
Layanan SignalR Sudut
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);
}
}]);