webSocket 移动端锁屏以及退到后台重连机制

 
更多

手机锁屏以及退出后台webscoket会断开,js在手机熄屏后会中断,在唤醒之后js会继续执行。所以设置在js中的定时发送心跳包的功能在手机熄屏后就没法执行了。熄屏时间过长,这个时候链接就会被服务端强制断开,并且大部分手机在熄屏时,websocket连接就已经断开了。

解决办法: 使用H5提供的页面隐藏/显示API。

document.addEventListener('visibilitychange', function () {
    if (document.visibilityState == 'hidden') {
        //记录页面隐藏时间
        let hiddenTime = new Date().getTime()
    } else {
        let visibleTime = new Date().getTime();
        //页面再次可见的时间-隐藏时间>10S,重连    
        if ((visibleTime - hiddenTime) / 1000 > 10) {
            // 主动关闭连接
            WebSockets.webSocketClose();
            // 1.5S后重连 因为断开需要时间,防止连接早已关闭了
            setTimeout(function () {
                WebSockets.openSocket()
            }, 1500);
        } else {
            console.log('还没有到断开的时间')
        }
    }
}
打赏

本文固定链接: https://www.cxy163.net/archives/3106 | 绝缘体

该日志由 绝缘体.. 于 2022年11月05日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: webSocket 移动端锁屏以及退到后台重连机制 | 绝缘体
关键字: , , , ,

webSocket 移动端锁屏以及退到后台重连机制:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter