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 значительно медленнее

Другие вопросы по тегам