У меня есть AngularJS SPA (одностраничное приложение), и я использую в нем SignalR для push-уведомлений. Я использую оболочку angular-signalr-hub для моего концентратора SignalR. Проблема в том, что SignalR отключается снова и снова почти каждую минуту. Вот как выглядит консольный журнал:
Часть соответствующего кода в файле JavaScript, в который выдается ошибка:
var hub = new Hub("reportHub", {
listeners: {
'newConnection': function () {
},
'broadcastReportProgress': function (reportProgress) {
Reports.add(reportProgress[0].clientName, reportProgress[0].folderPath, reportProgress[0].reportName, reportProgress[0].status, reportProgress[0].userName);
$rootScope.$apply();
},
'broadcastUserGenerating': function(reportProgress) {
Reports.addActiveUser(reportProgress.clientName, reportProgress.status, reportProgress.userName);
$rootScope.$apply();
}
},
methods: ['send'],
errorHandler: function(error) {
console.error(error);
},
stateChanged: function (state) {
var stateNames = { 0: 'connecting', 1: 'connected', 2: 'reconnecting', 4: 'disconnected' };
if (stateNames[state.newState] === 'connected') {
connected = true;
}
else if (stateNames[state.newState] === 'disconnected') {
if (hub.connection.lastError) {
console.log("Reconnecting SignalR hub after error");
hub.connection.start();
connected = true;
}
}
},
logging: true,
Строка 48 выглядит следующим образом:
console.error(error);
Это проблема, потому что у меня также есть система обмена сообщениями RabbitMQ в моем веб-API, которая подключается к концентратору SignalR и отправляет в него сообщения, иногда десяткисообщений в минуту, поэтому, если он пытается отправить сообщение в концентратор SignalR, пока он отключен, мое приложение выдает эту ошибку:
System.InvalidOperationException: данные не могут быть отправлены, потому что соединение WebSocket переподключается.
Есть идеи, в чем здесь проблема?