1
This commit is contained in:
179
nx/helper/measure.js
Normal file
179
nx/helper/measure.js
Normal file
@@ -0,0 +1,179 @@
|
||||
import { getWebSocketUrl } from '@/defaultBaseUrl'
|
||||
export default {
|
||||
isOpen: false,
|
||||
isOpening: false,
|
||||
socketTask: false,
|
||||
timeoutID: -1,
|
||||
regData: '',
|
||||
webSocketUrl: getWebSocketUrl(),
|
||||
//开始心跳
|
||||
heartbeatStart() {
|
||||
if (this.timeoutID != -1) {
|
||||
this.heartbeatClear()
|
||||
}
|
||||
this.timeoutID = setTimeout(() => {
|
||||
this.socketTask.send({
|
||||
data: 'ping'
|
||||
})
|
||||
}, 15000)
|
||||
},
|
||||
//清理心跳
|
||||
heartbeatClear() {
|
||||
clearTimeout(this.timeoutID)
|
||||
},
|
||||
//重置心跳
|
||||
heartbeatReset() {
|
||||
this.heartbeatClear()
|
||||
this.heartbeatStart()
|
||||
},
|
||||
//注册用户
|
||||
regUser() {
|
||||
this.socketTask.send({
|
||||
data: this.regData
|
||||
})
|
||||
},
|
||||
//设置连接注册数据
|
||||
setRegData(regData) {
|
||||
this.regData = regData
|
||||
},
|
||||
//打开连接
|
||||
open() {
|
||||
if (this.regData === '') {
|
||||
console.log('请先调用setRegData方法设置注册数据!!!')
|
||||
return
|
||||
}
|
||||
//防止重复连接
|
||||
if (this.isOpening) {
|
||||
console.log('WebSocket正在连接。。。')
|
||||
return
|
||||
}
|
||||
if (this.isOpen && this.socketTask) {
|
||||
console.log('WebSocket已连接。。。')
|
||||
return
|
||||
}
|
||||
// console.log("WebSocket开始连接。。。");
|
||||
this.isOpening = true
|
||||
let socketTask = uni.connectSocket({
|
||||
url: this.webSocketUrl,
|
||||
header: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
success: e => {
|
||||
// console.log(e);
|
||||
},
|
||||
complete: () => {}
|
||||
})
|
||||
if (!socketTask) return
|
||||
// console.log(socketTask);
|
||||
this.socketTask = socketTask
|
||||
|
||||
//监听开启
|
||||
socketTask.onOpen(res => {
|
||||
this.isOpen = true
|
||||
this.isOpening = false
|
||||
// console.log("WebSocket连接成功。。。");
|
||||
this.regUser(this.regData)
|
||||
})
|
||||
|
||||
//监听消息
|
||||
socketTask.onMessage(res => {
|
||||
if (res.data.replace(/^\s+|\s+$/g, '') === 'pong') {
|
||||
this.heartbeatReset()
|
||||
return
|
||||
}
|
||||
let data = JSON.parse(res.data)
|
||||
this.message(data)
|
||||
})
|
||||
|
||||
//监听关闭
|
||||
socketTask.onClose(res => {
|
||||
this.isOpen = false
|
||||
this.isOpening = false
|
||||
this.socketTask = false
|
||||
// console.log("WebSocket连接关闭。。。");
|
||||
uni.$emit('connClose', res)
|
||||
this.heartbeatClear()
|
||||
this.reOpen()
|
||||
})
|
||||
|
||||
//监听错误
|
||||
socketTask.onError(res => {
|
||||
this.isOpen = false
|
||||
this.isOpening = false
|
||||
this.socketTask = false
|
||||
console.log('WebSocket连接失败。。。')
|
||||
this.heartbeatClear()
|
||||
this.reOpen()
|
||||
})
|
||||
},
|
||||
//消息处理
|
||||
message(data) {
|
||||
switch (data.cmd) {
|
||||
case 'replyRegister':
|
||||
if (data.data.success) {
|
||||
console.log('注册成功!')
|
||||
//注册成功开始心跳
|
||||
this.heartbeatStart()
|
||||
}
|
||||
break
|
||||
case 'replyControlMeasurePoint':
|
||||
uni.$emit('controlMeasurePoint', data)
|
||||
break
|
||||
case 'replyControlDevice':
|
||||
uni.$emit('controlDevice', data.data)
|
||||
break
|
||||
case 'deviceStatus':
|
||||
uni.$emit('deviceStatus', data.data)
|
||||
break
|
||||
case 'deviceData':
|
||||
uni.$emit('deviceData', data.data)
|
||||
break
|
||||
case 'sellerData':
|
||||
uni.$emit('sellerData', data.data)
|
||||
break
|
||||
case 'buyerData':
|
||||
uni.$emit('buyerData', data.data)
|
||||
break
|
||||
case 'goodsData':
|
||||
uni.$emit('goodsData', data.data)
|
||||
break
|
||||
case 'logData':
|
||||
uni.$emit('logData', data.data)
|
||||
break
|
||||
case 'measurePointStatus':
|
||||
uni.$emit('measurePointStatus', data.data)
|
||||
break
|
||||
case 'replyMeasureData':
|
||||
uni.$emit('replyMeasureData', data.data)
|
||||
break
|
||||
case 'replySaveMeasureData':
|
||||
uni.$emit('replySaveMeasureData', data.data)
|
||||
break
|
||||
}
|
||||
},
|
||||
//重新打开
|
||||
reOpen() {
|
||||
this.timeoutID = setTimeout(() => {
|
||||
this.open()
|
||||
}, 5000)
|
||||
},
|
||||
//关闭连接
|
||||
close() {
|
||||
if (this.isOpen) {
|
||||
this.socketTask.close()
|
||||
}
|
||||
},
|
||||
//发送消息
|
||||
send(data) {
|
||||
console.log('发送消息。。。')
|
||||
if (!this.isOpen) {
|
||||
//关闭则打开
|
||||
this.open()
|
||||
}
|
||||
if (this.socketTask) {
|
||||
this.socketTask.send({
|
||||
data: data
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user