let Socket = '' let setIntervalWesocketPush = null /**建立连接 */ export function createSocket() { // var socketUrl="http://localhost:10003/imserver"; var socketUrl = "http://218.28.199.138:10003/imserver"; socketUrl = socketUrl.replace("https", "ws").replace("http", "ws"); console.log(socketUrl); if (!Socket) { console.log('建立websocket连接') Socket = new WebSocket(socketUrl) Socket.onopen = onopenWS Socket.onmessage = onmessageWS Socket.onerror = onerrorWS Socket.onclose = oncloseWS } else { console.log('websocket已连接') } } /**打开WS之后发送心跳 */ export function onopenWS() { sendPing() //发送心跳 } /**连接失败重连 */ export function onerrorWS() { clearInterval(setIntervalWesocketPush) Socket.close() createSocket() //重连 } /**WS数据接收统一处理 */ export function onmessageWS(e) { console.log(e.data); window.dispatchEvent(new CustomEvent('onmessageWS', { detail: { data: e } })) } /**发送数据 * @param eventType */ export function sendWSPush(eventTypeArr) { const obj = { appId: 'airShip', cover: 0, event: eventTypeArr } if (Socket !== null && Socket.readyState === 3) { Socket.close() createSocket() //重连 } else if (Socket.readyState === 1) { Socket.send(JSON.stringify(obj)) } else if (Socket.readyState === 0) { setTimeout(() => { Socket.send(JSON.stringify(obj)) }, 3000) } } /**关闭WS */ export function oncloseWS() { clearInterval(setIntervalWesocketPush) console.log('websocket已断开') } /**发送心跳 */ export function sendPing() { Socket.send('ping') setIntervalWesocketPush = setInterval(() => { Socket.send('ping') }, 5000) }