Почему загружаются сокеты ( Socket IO ) в node js?

Друзья, привет, Столкнулся с такой проблемой .

Сделал подключение к сокетам в node js вместе с запросом в базу данных , но суть в том, что сокет посылает запрос к пользователю только через 10-20 секунд. То есть эти запросы, которые представлены ниже видимо как-то долго выполняются и после этого отправляются в сокет.

Можете ли подсказать, правильно ли реализованы запросы и отправка и почему они так долго отправляются клиентам
( Изучаю нод не так давно, поэтому нужны хорошие советы )
io.sockets.on('connection', function(socket){
      
      console.log('connect');

    setInterval(function() {
    connection.query('SELECT * FROM drops ORDER BY id DESC LIMIT 10', function(error, result, fields){
	socket.emit('games', result); 
	});	
    }, 2000);


    setInterval(function() {
    connection.query('SELECT COUNT(*) FROM users', function(error, result, fields){
	socket.emit('users', result['0']['COUNT(*)']); 
	});	

	connection.query('SELECT SUM(amount) FROM drops', function(error, result, fields){
	socket.emit('drops', result['0']['SUM(amount)']); 
	});	

    }, 3000);


});


Может нужны какие-то заглушки на стороне клиента ?
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 1
@de1m
По-моему такие вещи сразу без обработки как-то не очень правильно сразу посылать.
А по поводу темы, вы посмотрите сперва, в каком месте задержка происходит.
Попробуйте так, будет понятно, где проблема:
setInterval(function () {
        let startTime = process.hrtime.bigint();
        connection.query('SELECT * FROM drops ORDER BY id DESC LIMIT 10', function (error, result, fields) {
            socket.emit('games', result);
        });
        let endTime = process.hrtime.bigint();
        console.log("DB Req1: " + (endTime - startTime)); // in nanosec.
    }, 2000);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы