在会话中重新加载页面变量后,不要在断开连接事件中更新值

时间:2018-07-15 16:48:53

标签: node.js express-session

在名为join的事件中,我在nodejs中进行了聊天,只要有新的用户连接,我都会将 sess.online 变量设置为true

sckCliente.on('Join',function(apelido){
    if(sess.apelido){
      sess.status            = "online";
      sess.save()
    }
    // code additional here
});

sckCliente.on("disconnect", function(){
    var data                        = {};
    data.cliente                    = {};
    data.cliente.apelido            = sess.apelido;
    data.redis                      = redis_cliente;
    data.mensagem                   = {};
    console.log('entry in disconnect',sess);
    if(typeof(sess.apelido)        != 'undefined'){
       sess.status                   = "offline";
       sess.save();
       console.log('agora status tem o valor de: ',sess);
       setInterval(function(){

            // sess.status never get value online again

           if(sess.status        == "offline"){
               console.log('apagar este cliente',sess);
               let key                sess.categoria_slug+":"+sess.sala_slug+":"+sess.tipo_conversa;
               data.mensagem.usuario         = {"apelido" : sess.apelido, 
               "tipo_conversa" : sess.tipo_conversa};
               data.mensagem.conteudo        = {"hora"    : 
               fnMensagens.GetHora() };
               data.mensagem.conteudo.texto  = "<span style='color:red'>O 
               usúario "+sess.apelido+" saiu da sala.</span>";
               sckCliente.in(key).emit("Receber Mensagem",data.mensagem);
               //fnCliente.ApagarCliente(data);
               //sess.destroy();
          }
        },10000);
     }else sckCliente.emit('Redirect');
   }); 

重新加载页面后,再次在我的活动加入中将sess.status设置为在线。我在其他事件中看到此变量更改值。但是在setTimeout内的断开事件中,为什么值继续脱机,为什么?如何解决这个问题?

0 个答案:

没有答案