我正在堆栈中查看如何以更复杂的方式处理断开事件,需要在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);
});
有什么想法吗?