This commit is contained in:
houjunxiang
2025-10-09 18:19:55 +08:00
parent f2ffc65094
commit 386f1e7466
1553 changed files with 284685 additions and 32820 deletions

179
nx/helper/measure.js Normal file
View 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
})
}
}
}