我在从另一个处于倒计时(setInterval)的浏览器/选项卡中发出套接字时遇到问题
我有以下脚本
此代码使我能够了解平台上所有已连接的人
server.js
var nicks = new Array();
function usuarios(socket){
socket.emit('usuarios',{nicks: nicks});
socket.broadcast.emit('usuarios',{nicks: nicks});
}
function nick(socket){
socket.on('nick',function(data){
var nick = data.nick;
var variable = nicks.filter(function(hero) {
return hero.user == data.nick.user;
});
if(variable.length==0){ //Nuevo
nicks.push(nick);
socket.nick = nick;
socket.emit('nick',{correcto: true,nick: nick});
usuarios(socket);
}else{//Existe
socket.emit('nick',{update: true,nick: nick});
}
})
}
front.js
var timer;
function myTimer(reset) {
clearInterval(timer);
timer = setInterval(function() {
countdown--;
var nick = {user: actualuser,time: countdown};
socket.emit('nick',{nick: nick});
if (countdown == 3000) { //Reset count.
countdown=3600;
var nick= {user: data,time: countdown};
socket.emit('nick',{nick: nick});
}
},1000);
}
socket.on('nick',function(data){
});
套接字将每1秒钟开始发出下一个计数
["nick",{"update":true,"nick":{"user":"1","time":3542}}]
所有这些都有效,但是我现在遇到的问题是,如果一个人进入不同的浏览器,处理每个会话的倒计时不会重新启动,而是继续其过程。 例子
- Chrome浏览器标签1:倒计时= 3450
- Chrome浏览器标签2:倒计时= 3032
- Chrome Tab 3:倒计时= 3978
每次更新选项卡(刷新)时,计数器都会重置为3600,但只有当前选项卡
满足3000秒的条件后,所有标签上的计数器都会重置