ฉันมีแอปพลิเคชันเชิงมุมที่บางเส้นทางฟังข้อความ SignalR บางข้อความและข้อความบางข้อความถูกฟังหลายเส้นทาง ทุกอย่างทำงานได้ดี แต่เมื่อฉันนำทางจากเส้นทาง A ไปยังเส้นทาง B ฟังก์ชันตัวจัดการของเส้นทาง A สำหรับเหตุการณ์ SignalR ยังคงทำงานอยู่ ฉันใช้บริการเชิงมุมเพื่อรวมฮับ SignalR และติดตามฟังก์ชันการโทรกลับ ฉันคิดที่จะรีเซ็ตอาร์เรย์ของฟังก์ชันการโทรกลับทุกครั้งที่เปลี่ยนเส้นทาง แต่ฉันรู้สึกว่านั่นไม่ใช่วิธีที่ถูกต้องในการทำเช่นนี้ เนื่องจากควรมีการเชื่อมต่อฮับเพียงจุดเดียวและการจัดการเหตุการณ์เฉพาะเส้นทาง วิธีที่เหมาะสมในการดำเนินการนี้คืออะไร
บริการ 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);
}
}]);