Надеясь, что кто-то мог испытать это раньше и может предложить решение. У меня есть приложение, которое работает на Express, Nodejs и сервере Socket.io с Angularjs внешним интерфейсом. Похоже, всякий раз, когда параллельно происходит запрос Angular http и событие socket.io, запрос http блокируется до тех пор, пока событие сокета не будет завершено. Как видите, данные размером от 5 до 15 КБ занимают более 15 секунд. Эта задержка в http-запросах происходит на локальном хосте, а также при прокси на сервере nginx в Windows / Linux и любой другой среде, которую я пробовал.
// Angular Factory
app.factory('socket',['$rootScope', function ($rootScope) {
var socket = io.connect('', {
path: static_path + '/socket.io',
transports: ['websocket']
});
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
},
disconnect: function(close){
socket.disconnect(close);
},
removeAllListeners: function (eventName, callback) {
socket.removeAllListeners(eventName, function() {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
}
};
}])
И мой сервер express, socket.io настроен таким образом ...
// Express and Socket.io server
var express = require('express');
var app = express();
var http = require('http').createServer(app);
var Server = require('socket.io');
// $(staticPath) is just path variable
var io = new Server({
path: `${staticPath}/socket.io`,
transports: ['websocket']
});
io.listen(http);
http.listen(8080);
Не имеет значения, использую ли я параметр транспортов или удаляю его