как остановить/ запустить таймер на сервере
есть таймер который находиться на сервере установлен на определённое время. Вопрос в том как можно сделать кнопку в админ панели что бы можно было запускать таймер с кнопки, а не что бы он постоянно работал.
Например мне нужно что бы когда я нажму кнопку в админ панели запускался таймер на 2 часа но для всех пользователей. Заранее спасибо.
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.parse(new Date());
var seconds = Math.floor((t / 1000) % 60);
var minutes = Math.floor((t / 1000 / 60) % 60);
var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
// var days = Math.floor(t / (1000 * 60 * 60 * 24));
return {
'total': t,
// 'days': days,
'hours': hours,
'minutes': minutes,
'seconds': seconds
};
}
function initializeClock(id, endtime) {
var clock = document.getElementById(id);
// var daysSpan = clock.querySelector('.days');
var hoursSpan = clock.querySelector('#hh');
var minutesSpan = clock.querySelector('#mm');
var secondsSpan = clock.querySelector('#ss');
function updateClock() {
var t = getTimeRemaining(endtime);
// daysSpan.innerHTML = t.days;
hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);
if (t.total <= 0) {
clearInterval(timeinterval);
}
}
updateClock();
var timeinterval = setInterval(updateClock, 1000);
}
var deadline="July 25 2021 20:25:00 GMT+0300"; // точная дата
// var deadline = new Date(Date.parse(new Date()) + 24 * 60 * 60 * 1000); // точное время
initializeClock('countdown', deadline);
Ответы (2 шт):
Как вариант использовать сокеты На сервере эмитите сокет, а клиенты его прослушивают и когда им приходит значение что пора запустить таймер - запускаете его
может кому пригодится решил проблему таким способом
io.sockets.on('connection', function (socket) {
socket.on('start', function (data) {
countdown = 7200;
var t = setInterval(function() {
countdown--;
var hours = Math.floor(countdown / 60 /60 );
var minutes = Math.floor(countdown / 60) - (hours * 60);
var seconds = countdown % 60;
let timer = hours +":"+ minutes +":"+ seconds ;
io.sockets.emit('timer', { countdown: timer});
}, 1000);
socket.on('stop', function () {
clearInterval(t);
})
});
});
при нажатии на кнопку старт идет отсчет от 02:00:00 в обратную сторону, который передаётся на всех подключенных пользователей