当前位置: 首页 > 面试题库 >

处理浏览器重载socket.io

衡修洁
2023-03-14
问题内容

socket.io中有一种方法可以在断开连接的事件中创建超时,然后检查用户是否已重新连接?

这个想法是仅在超时后未重新连接用户时才发出数据/将用户状态保存在数据库中

编辑 :@Are Wojciechowski回答之后,我已经完成了多个标签页和F5洪水处理程序

https://gist.github.com/foohey/7696811


问题答案:

有一个socket.on('disconnect', function () { ... });。所以你可以做

socket.on('disconnect', function () {
    setTimeout(function () {
         //do something
    }, 10000);
});

我明白了 因此,也许您应该执行以下操作:

客户:

//right after connection
socket.emit('register', localstorage.getItem('gameUniqueId'));

//somewhere, when game starts
var randomlyGeneratedUID = Math.random().toString(36).substring(3,16) + +new Date;
localStorage.setItem('gameUniqueId', randomlyGeneratedUID);

服务器:

io.sockets.on('connection', function (socket) {
    var player = null;

    socket.on('register', function (data) {
        if (data !== null) {
            //there was something in localstorage
            if (game.Players.existsUID(data)) {
                player = game.Players.getByUID(data);
                player.disconnected = false;
            } else {
                //timed out, create new player
            }
        } else {
            //localStorage is not set, create new player
        }
    });

    socket.on('disconnect', function () {
        player.disconnected = true;
        setTimeout(function () {
            if (player.disconnected) player.delete();
        }, 10000);
    });
});


 类似资料:
  • 问题内容: 我想在我的角度应用程序中检测到用户导航离开页面或重新加载页面时的情况。 然后,应用程序(使用某些登录过程)应区别于它已重新加载,因此用户不会丢失其身份验证数据,应用程序应能够从localStorage还原必要的信息。 请提出一些最佳技术来“处理”浏览器重新加载/导航。 问题答案: 重新加载后,您所有的JavaScript和内存变量均消失。在js中,您知道第一次重新运行代码时已重新加载页

  • 问题内容: 我写了一个简单的程序。只是CTabItem固有的CTabFolder和WelcomTab。我想通过呈现我的html的浏览器填充我的WelcomeTab。在WelcomeTab的init()方法上,我创建了一个浏览器,但是当程序要构造它时,出现此错误 … 另外,我在基于Arch-Linux的KDE上使用Eclipse 3.7,因为我在各处搜索到此错误时都发现线程受限,所以这是一个简单的程

  • 问题内容: 有谁知道在自动化过程中使用Selenium或任何其他工具来处理浏览器身份验证吗? 问题答案: 警报方法authenticateUsing() 使您可以跳过“ Http基本身份验证”框。 从Selenium 3.4开始,它仍处于测试阶段 现在,仅针对 InternetExplorerDriver

  • 问题内容: 我们正在针对现有代码库运行Selenium回归测试,并且Web应用程序中的某些屏幕使用弹出窗口作为中间步骤。 当前,我们在测试中使用以下命令: … 大多数情况下都可以使用 。偶尔测试将失败在与线 谁能建议一种更好,更 可靠的 方法? 另外,我们主要在IE6和7上运行这些测试。 问题答案: 有用!!只是为了让那些喜欢硒的人们更容易。 这对我使用IE7(正常模式)有效。 真是个令人毛骨悚然

  • 本文向大家介绍Nginx与浏览器缓存的处理方法,包括了Nginx与浏览器缓存的处理方法的使用技巧和注意事项,需要的朋友参考一下 一、浏览器对缓存的处理:Internet选项   ★ 控制请求服务器策略:是忽略资源的缓存策略的情况下额外强制请求服务器的意思。     ★ 检查存储的页面较新版本          1.每次访问网页时                 不管是否有缓存、资源状态是否过期,都

  • 我使用的是角度2.0.0-阿尔法.30版本。当重定向到其他路由时,刷新浏览器,其显示无法获取/路由。 你能帮我弄清楚为什么会发生这个错误吗?