网友回复
以下是vue版本的一个websocket重连机制,代码如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" /> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script> </head> <body> <div id="app"> </div> <script> let websock = null; let socketTimer = null; let socketParam = { type: 'test' }; new Vue({ el: '#app', name: 'test', data () { return { socketUrl: 'ws://web.debug.only.bfw.wiki:9502', timerWS: null, // 用于ws重连 timerCountWS: 0, // 用于重连计数,0-立刻开始重连,非0-1min重连一次。 timerFlagWS: true // 跳转页面了不再重连 } }, mounted () { this.initWebsocket() }, destroyed () { // 关闭websocket this.timerFlagWS = false; this.timerCountWS = 0; clearTimeout(this.timerWS) if (websock !== null) { websock.close(); websock = null; } clearTimeout(socketTimer); }, methods: { initWebsocket () { if (typeof WebSocket !== 'undefined') { this.timerCountWS++; // 浏览器支持Websocket通信协议 ...
点击查看剩余70%
jquery版本的websocket断线重连,代码如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" /> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script> <script type="text/javascript"> $(function() { var lockReconnect = false;//避免重复连接 var ws = null; //WebSocket的引用 var wsUrl = "web.debug.only.bfw.wiki:9992"; //这个要与后端提供的相同 //创建WebSocket连接,如果不确定浏览器是否支持,可以使用socket.js做连接 function createWebSocket(url){ try { if ('WebSocket' in window) { ws = new WebSocket("ws://" + url + "/socketServer"); } else { ws = new SockJS("http://" + url + "/sockjs/socketServer"); } initEventHandle(); } catch (e) { reconnect(wsUrl); } } function reconnect(url) { if(lockReconnect) return; lockReconnect = true; //没连接上会一直重连,设置延迟避免请求过多 setTimeout(function () { createWebSocket(wsUrl); console.log("正在重连,当前时间"+new Date()) lockReconnect = false; }, 5000); //这里设置重连间...
点击查看剩余70%
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?
js在浏览器中如何使用MediaStream与MediaRecorder实现声音音频多轨道混流?