私はsocket.io
で非常に簡単なアプリを作った。これで、すべての接続IDが表示されます。新しいブラウザタブを開くと、IDが追加されます。ブラウザのタブを閉じるとidを削除します。アイドル/非アクティブ接続を有効にする
ここで、任意のソケットに対して1つのタイムアウトイベントを設定します。タブのKeep alive!
ボタンが3時間クリックされていない場合(タブが3時間再訪問されなかったため)接続が "セミデッド"で、他の接続のページにその接続IDをgrey
にします。ボタンをクリックすると、タブが生き残り、他のページにはblack
が表示され、3時間のカウントダウンが再開されます。
これを実装する方法を知っている人はいますか?それは意志、私たちはしていない場合は
が長時間開いタブを再訪問:
また、私はアイドル/非アクティブな接続、切断およびタブ再訪間の関係についての2つのオプションの質問があります切断とみなされますか?
ブラウザタブで再訪イベントを設定することはできますか?
私の現在のバックエンド:
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>