node.js - Manejar navegador recargar socket.io
sails.js (1)
Hay un socket.on(''disconnect'', function () { ... });
. Así que solo puedes hacer
socket.on(''disconnect'', function () {
setTimeout(function () {
//do something
}, 10000);
});
EDITAR 1:
Ahora lo entiendo. Así que tal vez deberías hacer algo como esto:
Cliente:
//right after connection
socket.emit(''register'', localstorage.getItem(''gameUniqueId''));
//somewhere, when game starts
var randomlyGeneratedUID = Math.random().toString(36).substring(3,16) + +new Date;
localStorage.setItem(''gameUniqueId'', randomlyGeneratedUID);
Servidor:
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);
});
});
Hay una forma en socket.io para crear un tiempo de espera en el evento desconectado, luego verificar si el usuario ha sido reconectado?
La idea es emitir datos / guardar el estado del usuario en la base de datos solo si el usuario no se vuelve a conectar después del tiempo de espera
Edición : seguido de la respuesta de @Are Wojciechowski, he terminado con varias pestañas y el controlador de inundaciones F5