Socket.io непрерывно отправляет запрошенные данные каждому клиенту

Проблема в том, что переменная timer является локальной, и ее значение теряется после каждого вызова функции.

Вам нужно сохранить его, вы можете выставить его вне функции или если вы 't хотите выставить переменную как глобальную, вы можете сохранить ее в закрытии , например:

var endAndStartTimer = (function () {
  var timer; // variable persisted here
  return function () {
    window.clearTimeout(timer);
    //var millisecBeforeRedirect = 10000; 
    timer = window.setTimeout(function(){alert('Hello!');},10000); 
  };
})();

0
задан node_man 17 January 2019 в 05:12
поделиться

1 ответ

Для этого вы должны отслеживать клиентов A и B, а затем отправлять данные только определенному клиенту. Ниже приведен пример кода.

var clientA;
var clientB;
io.on('connection', function(client) {
    console.log('Client connected...');

    client.on('join', function(data) {
        if (something){
          clientA = client;
        }
        else {
          clientB = client;
        }
        console.log(data);
    });
    client.on('send',function(data){
        var datafinal = [];

        setInterval(function () {
        var usertype = data.type;
        var types = usertype.split(',');
            for (var i = 0; i < types.length; i++){
                datafinal.push(apifinaldata.filter((inbound) => inbound.usertype == types[i] && inbound.active == 1 ));
                }
                var final = datafinal.reduce(function(a, b) {
                    return a.concat(b);
                }, []);

                datafinal = [];

            if(someCondition){
              clientA.emit('finaldata', final);
              clientA.emit('callwaiting', callsdatafinal);
            }
            else {
              clientB.emit('finaldata', final);
              clientB.emit('callwaiting', callsdatafinal);
            }
        }, 1000);
    })
});

Здесь clientA и clientB - это два подключенных клиента. Вы можете отправлять данные любому клиенту на основе условий или логики программы.

0
ответ дан Mehul Prajapati 17 January 2019 в 05:12
поделиться
Другие вопросы по тегам:

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