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('还没有到断开的时间')
		}
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值