当前位置: 首页 > Web前端 > HTML5

htmlh5vuewebsocket断链心跳个人笔记

时间:2023-04-05 18:46:17 HTML5

让webSocket=null;让mAudio=null;让webSocketStateInterval=null;让heartInterval=null;让number=3;让_closeType=false;//true主动态挂断false被动态挂断exportdefault{initWebsocket(){let_that=this;让userInfo=JSON.parse(localStorage.getItem("userInfo"));让_url=process.env.VUE_APP_socketURL+userInfo.id;webSocket=newWebSocket(_url);webSocket.onopen=function(event){//console.log("webSocketonopen----->",event);heartInterval=setInterval(function(){webSocket.send(JSON.stringify({cmd:100}));},10000);webSocketStateInterval=setInterval(function(){switch(webSocket.readyState){caseWebSocket.CONNECTING:console.log("webSocket连接中---->");break;caseWebSocket.OPEN:console.log("webSocket打开中---->");break;caseWebSocket.CLOSING:console.log("webSocket关闭中---->");break;caseWebSocket.CLOSED:console.log("webSocket关闭成功---->");if(webSocketStateInterval){clearInterval(webSocketStateInterval);}if(_closeType==false){_that.initWebsocket();//number--;if(number===0){webSocket.close();}}break;default:console.log("webSocket------");break;}},2000);};webSocket.onmessage=function(event){//console.log("webSocketonmessage----->",event);letmessage=JSON.parse(事件.数据);//console.log("消息----->",消息);if(message.cmd==100){console.log("100-心跳中-----",message.msg);}};webSocket.onerror=function(event){console.log("webSocketonerror----->",event);_that.initWebsocket();};webSocket.onclose=function(event){console.log("webSocketonclose--->",event);if(_closeType){if(webSocketStateInterval){clearInterval(webSocketStateInterval);}}if(heartInterval){clearInterval(heartInterval);}_closeType=false;};//返回新的Promise((resolve,reject)=>{resolve()});},sendWebSocket(text){webSocket.send(JSON.stringify(text));},closeWebSocket(closeType){_closeType=closeType;网络Socket.close();},closeAudio(){mAudio.pause();}}