我使用了
现在,我想为任何套接字设置一个超时事件:如果某个选项卡的
有人知道如何实现这一点吗?
此外,我有两个可选问题,涉及空闲/非活动连接、断开和选项卡重新访问之间的关系:
socket.io
制作了一个非常简单的应用程序。现在,它会显示所有连接的ID:当我们打开一个新的浏览器选项卡时,它会添加一个ID;当我们关闭一个浏览器选项卡时,它会删除该ID。现在,我想为任何套接字设置一个超时事件:如果某个选项卡的
保持活动!
按钮在3个小时内没有被点击(可能是因为该选项卡在3个小时内未被重新访问),我们将认为该连接处于“半死”状态,并将其连接ID在其他连接的页面中显示为灰色
。当我们点击按钮时,该选项卡变为活动状态,在其他页面中显示为黑色
,并重新启动3小时的倒计时。有人知道如何实现这一点吗?
此外,我有两个可选问题,涉及空闲/非活动连接、断开和选项卡重新访问之间的关系:
- 如果长时间不重新访问打开的选项卡,是否会被视为断开连接?
- 是否可以在浏览器选项卡上设置重新访问事件?
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);
})
});
前端开发:
<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>