У меня есть приложение AngularJS в Службах приложений Azure, защищенное Active Directory, и я пытаюсь создать соединение через websocket с помощью socket.io.
Проблема в том, что AD вызовет ответ перенаправления 302, за которым socket.io не следует, поэтому я хотел бы перехватить ответ и следовать ему, после чего соединения socket.io должны быть в порядке. Однако вызовы socket.io не осуществляются через провайдера $ http и поэтому не могут управляться с помощью обычного перехватчика.
Есть ли в любом случае подобрать их с помощью перехватчика или, возможно, промежуточного программного обеспечения? Мне не повезло, пробуя типичные промежуточные решения (например, app.use (...)).
Обратите внимание, что socket.io будет работать с опросом, но это может вызвать проблемы с производительностью моего приложения.
Используя следующий перехватчик, я не получаю вывод в журнал консоли, хотя вижу в Fiddler вызовы и 302 ответа:
app.factory('httpInterceptor', [function() {
var httpInterceptor = {
request: function(req) {
if (req.url.indexOf('socket.io') > -1) {
console.log('REQUEST');
console.log(req);
}
return req;
},
requestError: function(reqerr) {
console.log(reqerr);
},
response: function(res) {
if ( res.status == 302 ) {
console.log('RESPONSE');
console.log(res);
}
return res;
},
responseError: function(reserr) {
console.log(reserr);
}
};
return httpInterceptor;
}]);
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('httpInterceptor');
}]);