Проблема в том, что переменная 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);
};
})();
Для этого вы должны отслеживать клиентов 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 - это два подключенных клиента. Вы можете отправлять данные любому клиенту на основе условий или логики программы.