socket.io
으로 매우 간단한 앱을 만들었습니다. 이제는 모든 연결 ID를 표시합니다. 새 브라우저 탭을 열면 ID가 추가됩니다. 브라우저 탭을 닫으면 ID가 제거됩니다.유휴/비활성 연결 활성화
이제 어떤 소켓에 대해서도 하나의 timeout 이벤트를 설정하고 싶습니다. Keep alive!
의 탭이 3 시간 동안 클릭되지 않았다면 (이는 해당 탭이 3 시간 동안 다시 방문되지 않았기 때문일 수 있습니다), 연결 "세미 - 죽은", 그리고 그 연결 ID를 grey
다른 연결의 페이지에 확인하십시오; 버튼을 클릭하면 탭이 활성화되고 다른 페이지에 black
이 표시되고 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>