在名为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内的断开事件中,为什么值继续脱机,为什么?如何解决这个问题?