node.js socket.io sails.js

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

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