J'ai fait une application très simple avec socket.io
. Maintenant, il affiche tous les identifiants de connexion: lorsque nous ouvrons un nouvel onglet du navigateur, il ajoute un identifiant; lorsque nous fermons un onglet du navigateur, il supprime l'identifiant. Maintenant, je veux définir un événement timeout pour n'importe quel socket: Si le bouton Keep alive!
d'un onglet n'a pas été cliqué pendant 3 heures (c'est peut-être parce que l'onglet n'a pas été revisité depuis 3 heures), nous considérons la connexion "semi-mort", et faire sa connexion ID grey
dans la page d'autres connexions; lorsque nous cliquons sur le bouton, l'onglet devient vivant et black
dans les autres pages, et redémarre le compte à rebours de 3 heures.Activer les connexions inactif/inactif
Est-ce que quelqu'un sait comment implémenter cela?
De plus, j'ai deux questions facultatives sur les relations entre inactivité/connexions inactives, débrancher et tabulations revisiter:
Si nous ne revoie un onglet ouvert depuis longtemps, sera-t être considéré comme une déconnexion?
Est-il possible de définir un événement de re-visite sur un onglet du navigateur?
Mon arrière-plan en cours:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var ids = [];
server.listen(3000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function(socket) {
ids.push(socket.id);
io.sockets.emit('ids', ids);
socket.on('disconnect', function() {
var index = ids.indexOf(socket.id);
ids.splice(index, 1);
io.sockets.emit('ids', ids);
})
});
-end avant:
<button type="button" onclick="alert('Keep alive!')">Keep alive!</button>
<div id="ids"></div>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
jQuery(function($) {
var socket = io.connect();
var $ids = $('#ids');
socket.on('ids', function (data) {
var html ="";
for (i = 0; i < data.length; i++) {
html += data[i] + "<br/>";
};
$ids.html(html);
})
});
</script>