Javascript 当用户断开连接时,如何停止服务器上的计时器?(Node.js/socket.io)
服务器上有一个计时器,当它启动时,倒计时开始,但当用户离开页面时,计时器继续运行,并在用户不再在页面上时触发。如何在用户离开页面之前或页面已经离开时停止此计时器Javascript 当用户断开连接时,如何停止服务器上的计时器?(Node.js/socket.io),javascript,node.js,timer,socket.io,Javascript,Node.js,Timer,Socket.io,服务器上有一个计时器,当它启动时,倒计时开始,但当用户离开页面时,计时器继续运行,并在用户不再在页面上时触发。如何在用户离开页面之前或页面已经离开时停止此计时器 //Timer function function startTimer() { console.log("Timer statrted!"); var countdown = 15000; setTimeout(function () { cons
//Timer function
function startTimer() {
console.log("Timer statrted!");
var countdown = 15000;
setTimeout(function () {
console.log("Timer done!");
}, 15000);
}
socket.on("get data", function() {
io.to(room_name).emit("data");
//call timer
startTimer(); //"Timer started!", "user disconnected", (after 15s) "Timer done!"
});
socket.on("disconnect" ,function(){
console.log("user disconnected");
});
我试图在
socket.on(“断开”)
或socket.on(“断开”)
中停止clearTimeout()
,但它们对已离开页面的当前用户无效。。。它们仅为其他用户触发…您需要存储timerID并在clearTimeout
var socketTimer;
function startTimer() {
console.log("Timer statrted!");
var countdown = 15000;
socketTimer = setTimeout(function () {
console.log("Timer done!");
}, 15000);
}
function stopTimer (){
clearTimeout(socketTimer);
}
socket.on("get data", function() {
io.to(room_name).emit("data");
//call timer
startTimer(); //"Timer started!", "user disconnected", (after 15s) "Timer done!"
});
socket.on("disconnect" ,function(){
console.log("user disconnected");
stopTimer();
});
您需要存储timerID并在
clearTimeout
var socketTimer;
function startTimer() {
console.log("Timer statrted!");
var countdown = 15000;
socketTimer = setTimeout(function () {
console.log("Timer done!");
}, 15000);
}
function stopTimer (){
clearTimeout(socketTimer);
}
socket.on("get data", function() {
io.to(room_name).emit("data");
//call timer
startTimer(); //"Timer started!", "user disconnected", (after 15s) "Timer done!"
});
socket.on("disconnect" ,function(){
console.log("user disconnected");
stopTimer();
});
无论如何,逻辑应该是封闭的。例如(不适用于此任务)
无论如何,逻辑应该是封闭的。例如(不适用于此任务)
您需要存储timerID并在ClearTimeOut中使用它。您需要存储timerID并在ClearTimeOutCorry中使用它,而不是用于此任务。关于计时器。抱歉,不适用于此任务。关于计时器。