我想在不活动2小时后断开用户与socket.io的连接,并给它们一个提示/重新连接按钮。不活动2小时后Socket.io自动断开
首先,我已设置自动重新连接到错误的和可变forcedc:
var socket = io.connect('https://coinchat.org:443',{secure: true, reconnect: false});
var forcedc = false;
接下来,我有时间出来活动,复位时,当有人移动鼠标:
$("body").mousemove(function(e){
clearTimeout(dcTimeout);
dcTimeout = setTimeout(function(){
if(!forcedc){
forcedc = true;
socket.disconnect();
$("#dcmodal").modal('show');
}
}, 1000 * 60 * 60 * 2);
});
基本上,forcedc意味着用户由于不活动而被断开连接,并且浏览器不应该刷新页面以尝试重新连接。如果forcedc为false,则意味着用户因网络问题/服务器重新启动而断开连接,浏览器应刷新页面以重新连接。
现在,当插座断开:
socket.on("disconnect", function(data){
if(!forcedc){
setTimeout(function(){document.location.reload(true)}, 1000 + Math.random()*12750);
}
});
如果forcedc是假的页面应该刷新。但是,即使用户由于不活动而已经“断开连接”,页面也会刷新(我知道forcedc = true已被执行,因为我看到了断开的模式)。
我在做什么错?
你好,我写了一个小的应用程序与您的代码,它的工作等。除非你可以多分享一点(或者你想分享我自己的片段),我不认为我们是c一个数字它出错的地方。 – danielepolencic
如果你改变* if(!forcedc){* to if(forcedc === false){* – Krasimir
这会按照我的预期工作。这是你正在测试的确切代码吗? – user568109