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('还没有到断开的时间')
		}
	}
}

你可能感兴趣的:(前端,websocket,javascript,前端)