Gérer le rechargement du navigateur socket.io

Socket.io permet de créer un délai d’attente dans l’événement déconnecté, puis de vérifier si l’utilisateur a été reconnecté?

L’idée est d’émettre des données / enregistrer l’état de l’utilisateur dans la firebase database uniquement si l’utilisateur n’est pas reconnecté après expiration du délai

Edit : suivi @Are Wojciechowski répondre, j’en ai terminé avec un gestionnaire d’inondations à plusieurs tabs et F5

https://gist.github.com/foohey/7696811

Il y a un socket.on('disconnect', function () { ... }); . Alors tu peux juste faire

 socket.on('disconnect', function () { setTimeout(function () { //do something }, 10000); }); 

EDIT 1:

Je comprends maintenant. Alors peut-être que vous devriez faire quelque chose comme ça:

Client:

 //right after connection socket.emit('register', localstorage.getItem('gameUniqueId')); //somewhere, when game starts var randomlyGeneratedUID = Math.random().toSsortingng(36).subssortingng(3,16) + +new Date; localStorage.setItem('gameUniqueId', randomlyGeneratedUID); 

Serveur:

 io.sockets.on('connection', function (socket) { var player = null; socket.on('register', function (data) { if (data !== null) { //there was something in localstorage if (game.Players.existsUID(data)) { player = game.Players.getByUID(data); player.disconnected = false; } else { //timed out, create new player } } else { //localStorage is not set, create new player } }); socket.on('disconnect', function () { player.disconnected = true; setTimeout(function () { if (player.disconnected) player.delete(); }, 10000); }); });