j'ai découvert il y a peu le javascript et socket.io, et comme premier programme je voulais m'entrainer sur un minichat en ligne.
Là où je me pers un peu c'est sur la partie serveur, j'y possède une fonction qui vient ping le client pour vérifier que la page est toujours ouverte, et qui le déconnecte lorsque ce n'est plus le cas, cependant même si le client est déconnecté je n'arrive pas à faire en sorte que le serveur le comprenne...
Je m'explique surement mal alors je vous offre une partie du code :
sock.on('connection', function (client){ console.log("Client connecté"); client.on('login', function (pseudo){ if (checkPseudo(pseudo)){//Verification de la non utilisation du pseudo
writePseudo(pseudo);
console.log(pseudo + " logged in"); // inscription de la connexion dans la console var msgServ = pseudo + " logged in."; var msgServEmit = {'pseudo': "Server", 'message': msgServ}; sock.emit('msg', msgServEmit);// Envoie d'un message lgged in sur le chat
setInterval(function () { var d = new Date(); var t = d.getTime(); sock.emit('ping', t);//test du ping }, 5000);
var lastPong;
client.on('pong', function(t){ lastPong = t;// reception du pong });
setInterval(function () { var e = new Date(); var f = e.getTime(); if ( f - lastPong <= 12000){ // test du ping timeout return 0; } else { console.log(pseudo + " logged out (ping TimeOut)"); // inscription de la deconnexion dans la console var msgServ = pseudo + " logged out (ping TimeOut)."; var msgServEmit = {'pseudo': "Server", 'message': msgServ}; sock.emit('msg', msgServEmit);// Envoie d'un message logged out sur le chat disconnect(client); }
}, 20000);
client.on('msg', function (msg){// Reception d'un message var message = {'pseudo': pseudo, 'message': msg}; // Création de l'objet message sock.emit('msg', message);//Envoie du message });
client.on('quit', function (client){// console.log(pseudo + " logged out"); // inscription de la deconnexion dans la console var msgServ = pseudo + " logged out."; var msgServEmit = {'pseudo': "Server", 'message': msgServ}; sock.emit('msg', msgServEmit);// Envoie d'un message logged out sur le chat disconnect(client); }); } }); });
Ce que je voudrais c'est trouver comment il est possible de faire en sorte qu'une fois le client déconnecté il ne puisse plus envoyer de message, et que le serveur ne lui envoie plus de ping.. En gros comment sortir de "sock.on('connection')..."