更改setInterval

我在从另一个处于倒计时(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秒的条件后,所有标签上的计数器都会重置

lcq3822987 回答:更改setInterval

我不明白您到底需要什么,

如果要保持所有时间相同,则需要将interval函数放在服务器node.js中,并在需要时发出计时器重置,并且在连接新用户时,只需发送实际倒数

您可以收听与关联的新用户

io.on('connection',function (socket) {
  // where io = require('socket.io')(http),})
本文链接:https://www.f2er.com/3153159.html

大家都在问