socket.io - несколько соединений, вызывающих медленное сообщение на сервер
Примечание: когда я удаляю "node_modules\uws\uws_win32_59.node", он работает нормально. uws используется engine.io, который используется socket.io.
Я написал очень простое приложение для демонстрации проблемы. В приведенном ниже приложении с двумя вкладками index.html, открытыми в chrome, нажатие кнопки "emit" отправляет сообщение от клиента, но для достижения сервера требуется значительный, различный промежуток времени. В любом месте от 2-15+ секунд. Если у меня открыта только 1 страница index.html, она работает нормально, но как только открывается вторая, я сталкиваюсь с проблемой. Если я удалю вышеупомянутый uws_win32_59.node, он отлично работает с несколькими соединениями.
server.js:
var io = require('socket.io')();
io.on('connection', function(socket){
console.log('connection made');
socket.on('number', function(num) {
console.log(num + ' received on server');
io.emit('number', num);
console.log(num + ' emitted from server');
});
});
io.listen(9001);
index.html:
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
</head>
<body>
<button id="emit">emit</button>
<p id="nums"></p>
<script>
var socket = io('http://localhost:9001');
socket.on('number', function(num){
console.log(num + ' received on client');
document.getElementById('nums').innerHTML = num;
});
var num = 0;
document.getElementById('emit').addEventListener('click', function(){
num++;
socket.emit('number', num);
console.log(num + ' emitted from client');
});
</script>
</body>
</html>
по умолчанию "npm install socket.io" устанавливает упомянутый выше модуль uws, который сам используется engine.io.
запустите "сервер узла" и откройте 2 экземпляра index.html, нажмите "emit" и обратите внимание на ведение журнала консоли инструментов разработчика браузера и ведение журнала консоли сервера узла, чтобы воссоздать проблему.
РЕДАКТИРОВАТЬ: похоже, есть открытая проблема с UWS на Windows OS: https://github.com/socketio/socket.io/issues/3100
1 ответ
Может быть, вам нужно установить npm socket.io@1.7.4. Я думаю, что версия 2.0 значительно медленнее