如何处理断开事件?

时间:2018-08-20 04:41:09

标签: node.js socket.io

我正在堆栈中查看如何以更复杂的方式处理断开事件,需要在redis集合中查找客户端并减少变量计数器。我找不到,此代码似乎每天可以处理100k的自然流量。但是我不确定哪种方法最好?

socket.on("disconnect",function(data){
  var ip                     = socket.handshake.headers['x-forwarded-for'].split(",")[0];
  sess.status                = false;
  sess.save();
  timerDisconnect[ip]        = setTimeout(function(){
  cliente_redis.hgetall("cliente:"+ip,function(err,cliente){
     if(cliente    != null){
       let referer  = socket.request.headers.referer;
       if(parse(referer).hostname                  != configs.hostname_adm){
         global.conectados                          = global.conectados - 1;
         global.desconectados                       = global.desconectados + 1;
         global.conectados_zona[cliente.id_zona]    = conectados_zona[cliente.id_zona] - 1;
         global.desconectados_zona[cliente.id_zona] =(typeof(global.desconectados_zona[cliente.id_zona]) == 'undefined')? 1 : global.desconectados_zona[cliente.id_zona] + 1;
         delete timerDisconnect[ip];
         //console.log('disconnect',ip,cliente);
         cliente_redis.hset("cliente:"+ip,'status','false');
         sess.destroy();
         socket.disconnect(true);
         }
      }//else console.log('Ao tentar desconectar o ip:'+ip+" o cliente nao foi localizado");
    });
  },configs.ttl_desconexao);
});

有什么想法吗?

0 个答案:

没有答案