Je rencontre actuellement un problème avec la fermeture de socket. A la fermeture du client, le serveur reçoit bien la notification de déconnexion, mais le socket côté serveur reste ouvert (j'ai placé un timer pour montrer que malgré la déconnexion, celui-ci continue).
Après de nombreuses lectures et divers essais, je ne vois pas ce qui peut ce qui peut bloquer.
Ci joint une copie du code côté serveur .
Merci pour l'aide, cordialement
Pascal
io.sockets.on('connection', function (socket) {
var compteur=0;
// Ouverture d'un nouveau socket (nouveau client connecté)
console.log('Nouveau client connecte....', socket.id);
socket.on('disconnect', function () {
console.log('Deconnexion du Socket : ',socket.id);
//socket.manager.onClientDisconnect(socket.id); //--> endless loop with this disconnect event on server side
//socket.disconnect(true); //--> same here
//socket.conn.close();
socket.conn.close(true);
//socket.onclose('Depart Client');
//socket.leave();
//socket.disconnect(socket.id);
//socket.manager.onClientDisconnect(socket.id);
//socket.io.close();
});
var intrvlId = setInterval(function() {
compteur++;
console.log('Test tmer id : ',socket.id, ' Compteur = ',compteur);
socket.emit('Requete Serveur', { compteur : compteur }); // Transmission de la valeur du compteur
}, 5000);
// Gestion des requetes recues
socket.on('Requete Client', function (data) {
console.log('Chaine Transmise : ',data);
if(data.action) { // Extraction des commandes
console.log('Commande client : ', data.action);
switch(data.action) {
case 'actualisation':
socket.emit('Requete Serveur', { compteur: compteur }); // Envoi de la valeur du compteur au client
console.log('Actualisation de la page');
break;
default:
console.log('Requete non reconnue...');
break;
}
}
});
});
Ci dessous une copie des logs obtenus en mode DEBUG.
engine:socket sending packet "message" (2["Requete Serveur",{"compteur":5}]) +17ms
engine:socket flushing buffer to transport +1ms
engine:ws writing "42["Requete Serveur",{"compteur":5}]" +1ms
socket.io:client client close with reason transport close +1s
socket.io:socket closing socket - reason transport close +26s
socket.io:client ignoring remove for 03ld0pKdAoOo0Ej4AAAA +8ms
Deconnexion du Socket : 03ld0pKdAoOo0Ej4AAAA
Test tmer id : 03ld0pKdAoOo0Ej4AAAA Compteur = 6
socket.io:client ignoring packet write {"type":2,"data":["Requete Serveur",{"compteur":6}],"nsp":"/"} +3s
Test tmer id : 03ld0pKdAoOo0Ej4AAAA Compteur = 7
socket.io:client ignoring packet write {"type":2,"data":["Requete serveur",{"compteur":7}],"nsp":"/"} +5s