/*****************websocket用法start*******************/ // 判断页面有没有存在websocket连接 if (window.WebSocket) { let ws = new WebSocket("ws://xx.xxxx.xx") // 与后端配置ip端口一致(连接websocket) ws.onopen = function() { console.log("服务器连接成功") } ws.onclose = function() { console.log("服务器连接关闭") reconnect() } ws.onerror = function(e) { console.log("服务器连接出错", e) reconnect() } ws.onmessage = function(e) { // 接收服务器返回的数据 console.log(e.data) } } else { console.log('抱歉,您的浏览器不支持Websocket协议!') } /*****************websocket用法end*******************/ let ws = null let time = null let date = null let lockReconnect = false let url = ws://xxx.xxxxxx.xxx // 重连webscoket function reconnect(){ if (lockReconnect) return; lockReconnect = true time && clearTimeout(time) time = setTimeout(function(){ createWebSocket() lockReconnect = false }, 4000) } // 创建websocket连接 function creatWebSocket() { if (window.WebSocket) { try { // 尝试连接websocket ws = new WebSocket(url) init() } catch { // 连接失败,重新连接 reconnect() } } else { console.log('抱歉,您的浏览器不支持webscoket协议') } } // websocket初始化 function init() { ws.onopen = function() { ws.send(JSON串) // 向后端发送数据 start() // 一段时间后关闭连接 } ws.onclose = function() { // 关闭服务后重新连接 reconnect() } ws.onerror = function(e) { // 报错重连 reconnect() } ws.onmessage = function(e){ // 接收成功,心跳检测 start() } } // 心跳检测,即间隔一段时间后关闭连接,再次尝试连接 function start() { date && clearTimeout(date) date = setTimeout(function() { ws.close() }, 600000) }