udp tcp 逻辑优化

This commit is contained in:
lixiao 2025-05-13 20:16:39 +08:00
parent 7e05ec862e
commit 64bd47670f
2 changed files with 118 additions and 211 deletions

View File

@ -5,6 +5,9 @@ import FileUtil from '../../common/utils/File'
import { GlobalConfig } from '../../config/index' import { GlobalConfig } from '../../config/index'
export async function getTCP(flag = false) { export async function getTCP(flag = false) {
if (globalThis.TcpClient && globalThis.TcpClient.closeTcp && !flag) {
return
}
globalThis.getCloseTcp = true globalThis.getCloseTcp = true
const fileUtil = new FileUtil(globalThis.context) const fileUtil = new FileUtil(globalThis.context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
@ -14,74 +17,34 @@ export async function getTCP(flag = false) {
} }
} else { } else {
const result = JSON.parse(data) const result = JSON.parse(data)
if (globalThis.TcpClient && globalThis.TcpClient.closeTcp && !flag) { console.log("tcp init", result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort)
globalThis.TcpClient.closeTcp(async () => { const tcpClient: TcpClient = new TcpClient(result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort)
console.log("tcp init", result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort) globalThis.TcpClient = tcpClient
setTimeout(async () => { await globalThis.TcpClient.bindTcp()
const tcpClient: TcpClient = new TcpClient(result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort) await globalThis.TcpClient.connectTcp()
globalThis.TcpClient = tcpClient await globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
await globalThis.TcpClient.bindTcp()
await globalThis.TcpClient.connectTcp()
clearInterval(globalThis.intervalSendmsg) clearInterval(globalThis.intervalSendmsg)
globalThis.intervalSendmsg = setInterval(() => { globalThis.intervalSendmsg = setInterval(() => {
console.log('getCloseTcp', globalThis.getCloseTcp) if (!globalThis.getCloseTcp) {
if (!globalThis.getCloseTcp) { globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002 }
} }, 1000 / 3)
}, 1000 / 3) globalThis.TcpClient.onError((val) => {
globalThis.TcpClient.onError((val) => { setTimeout(() => {
setTimeout(() => { getTCP()
getTCP() }, 1000)
}, 1000) })
}) await globalThis.TcpClient.onMessage((val) => {
await globalThis.TcpClient.onMessage((val) => { setTimeout(() => {
setTimeout(() => { if (val && globalThis.udpClient?.sendMsg) {
if (val) { globalThis.udpClient?.sendMsg(val)
console.log('socketTag[PLC.UdpClient] status:', globalThis.udpClient.getStatus()) globalThis.udpClientGps2?.sendMsg(val)
globalThis.udpClient?.sendMsg(val)
globalThis.udpClientGps2?.sendMsg(val)
}
}, 1000)
})
}, 2000)
})
}
else {
console.log("tcp init", result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort)
const tcpClient: TcpClient = new TcpClient(result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort)
globalThis.TcpClient = tcpClient
await globalThis.TcpClient.bindTcp()
await globalThis.TcpClient.connectTcp()
await globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
clearInterval(globalThis.intervalSendmsg)
globalThis.intervalSendmsg = setInterval(() => {
// console.log('getCloseTcp',globalThis.getCloseTcp)
if (!globalThis.getCloseTcp) {
globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
} }
}, 1000 / 3) }, 1000)
globalThis.TcpClient.onError((val) => {
setTimeout(() => {
getTCP()
}, 1000)
})
await globalThis.TcpClient.onMessage((val) => {
setTimeout(() => {
if (val && globalThis.udpClient?.sendMsg) {
globalThis.udpClient?.sendMsg(val)
globalThis.udpClientGps2?.sendMsg(val)
}
}, 1000)
}) })
}
} }
return return
} }
// globalThis.udpClient.bindUdp()

View File

@ -9,9 +9,12 @@ export async function sendMsg(val) {
export async function getUDP(context, errorFlag?) { export async function getUDP(context, errorFlag?) {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
if (globalThis.udpClient && globalThis.udpClient.closeUdp && !errorFlag) {
resolve(true)
return
}
const fileUtil = new FileUtil(context) const fileUtil = new FileUtil(context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
console.log('ttttt', data)
if (data === '' || data === undefined) { if (data === '' || data === undefined) {
console.log(` getUDP has no IPConfigTable `); console.log(` getUDP has no IPConfigTable `);
globalThis.udpClient = {} globalThis.udpClient = {}
@ -19,56 +22,34 @@ export async function getUDP(context, errorFlag?) {
resolve('') resolve('')
} else { } else {
const result = JSON.parse(data) const result = JSON.parse(data)
console.log(` getUDP has IPConfigTable `); // 未绑定
if (globalThis.udpClient && globalThis.udpClient.closeUdp) { console.log(` getUDP has no udp clent and bind `);
console.log(` getUDP has udclent close and rebind `); const udpClient: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort)
globalThis.udpClient.closeUdp(() => { udpClient.bindUdp()
setTimeout(() => { udpClient.sendMsg('111')
globalThis.udpClient.rebindUdp(result.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort) globalThis.host = `http://${result.centerIp}:${result.centerPort}`
globalThis.udpClient.sendMsg('111', null) globalThis.udpClient = udpClient
globalThis.host = `http://${result.centerIp}:${result.centerPort}` globalThis.udpClient.onMessage_1(() => {
globalThis.udpClient.onError_Callback(() => { console.log('getUDPonMessage_1msgmsgByGloalUdp')
console.log('getUDPgetUDPgetUDP') })
getUDP(context, true) globalThis.udpClient.onError_Callback(() => {
if (errorFlag && globalThis.udpClient && globalThis.udpClient.onMessage_1) { getUDP(context, true)
globalThis.udpClient.onMessage_1 = globalThis.udpClient.onMessage_1 if (errorFlag && globalThis.udpClient && globalThis.udpClient.onMessage_1) {
} globalThis.udpClient.onMessage_1 = globalThis.udpClient.onMessage_1
}) }
resolve(`http://${result.centerIp}:${result.centerPort}`) })
getChuankouFn()
}, 1000) resolve(`http://${result.centerIp}:${result.centerPort}`)
})
}
else {
// 未绑定
console.log(` getUDP has no udclent and bind `);
console.log('ttttttdata', JSON.stringify(result))
const udpClient: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort)
udpClient.bindUdp()
udpClient.sendMsg('111')
globalThis.host = `http://${result.centerIp}:${result.centerPort}`
globalThis.udpClient = udpClient
globalThis.udpClient.onMessage_1(() => {
console.log('getUDPonMessage_1msgmsgByGloalUdp')
})
globalThis.udpClient.onError_Callback(() => {
getUDP(context, true)
if (errorFlag && globalThis.udpClient && globalThis.udpClient.onMessage_1) {
globalThis.udpClient.onMessage_1 = globalThis.udpClient.onMessage_1
}
})
getChuankouFn()
resolve(`http://${result.centerIp}:${result.centerPort}`)
}
} }
return
}) })
} }
export async function getUDPGps2(context, errorFlag?) { export async function getUDPGps2(context, errorFlag?) {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
if (globalThis.udpClientGps2 && globalThis.udpClientGps2.closeUdp && !errorFlag) {
resolve(true)
return
}
const fileUtil = new FileUtil(context) const fileUtil = new FileUtil(context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
console.log('ttttt', data) console.log('ttttt', data)
@ -77,49 +58,31 @@ export async function getUDPGps2(context, errorFlag?) {
resolve('') resolve('')
} else { } else {
const result = JSON.parse(data) const result = JSON.parse(data)
if (globalThis.udpClientGps2 && globalThis.udpClientGps2.closeUdp) { // 未绑定
console.log(` getUDPGPS2 has udclent close and rebind `); console.log(` getUDPGPS2 has no udclent and bind `);
globalThis.udpClientGps2.closeUdp(() => { const udpClient: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, (Number(result.udplocalIpPort) + 1).toString(), result.udpOppositeIp2, (Number(result.udpOppositeIpPort) + 1).toString())
setTimeout(() => { udpClient.bindUdp()
globalThis.udpClientGps2.rebindUdp(result.udplocalIp, Number(result.udplocalIpPort) + 1, result.udpOppositeIp2, Number(result.udpOppositeIpPort) + 1) udpClient.sendMsg('111')
globalThis.udpClientGps2.sendMsg('111', null) globalThis.udpClientGps2 = udpClient
globalThis.udpClientGps2.onError_Callback(() => {
console.log('getUDPGPS')
getUDP(context, true)
if (errorFlag && globalThis.udpClientGps2 && globalThis.udpClientGps2.onMessage_1) {
globalThis.udpClientGps2.onMessage_1 = globalThis.udpClientGps2.onMessage_1
}
})
resolve(`http://${result.centerIp}:${result.centerPort}`)
}, 1000)
})
} globalThis.udpClientGps2.onMessage_1(() => {
else { console.log('getUDPGPS2 onMessage_1 MsgByGlobalUdpGPS2')
// 未绑定 })
console.log(` getUDPGPS2 has no udclent and bind `); globalThis.udpClientGps2.onError_Callback(() => {
const udpClient: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, (Number(result.udplocalIpPort) + 1).toString(), result.udpOppositeIp2, (Number(result.udpOppositeIpPort) + 1).toString()) getUDPGps2(context, true)
udpClient.bindUdp() if (errorFlag && globalThis.udpClientGps2 && globalThis.udpClientGps2.onMessage_1) {
udpClient.sendMsg('111') globalThis.udpClientGps2.onMessage_1 = globalThis.udpClientGps2.onMessage_1
globalThis.udpClientGps2 = udpClient }
})
globalThis.udpClientGps2.onMessage_1(() => { resolve(`http://${result.centerIp}:${result.centerPort}`)
console.log('getUDPGPS2 onMessage_1 MsgByGlobalUdpGPS2')
})
globalThis.udpClientGps2.onError_Callback(() => {
getUDPGps2(context, true)
if (errorFlag && globalThis.udpClientGps2 && globalThis.udpClientGps2.onMessage_1) {
globalThis.udpClientGps2.onMessage_1 = globalThis.udpClientGps2.onMessage_1
}
})
resolve(`http://${result.centerIp}:${result.centerPort}`)
}
} }
return
}) })
} }
export async function getUDP2(context, errorFlag?) { export async function getUDP2(context, errorFlag?) {
if (globalThis.udpClient2 && globalThis.udpClient2.closeUdp && !errorFlag) {
return
}
const fileUtil = new FileUtil(context) const fileUtil = new FileUtil(context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
if (data === '' || data === undefined) { if (data === '' || data === undefined) {
@ -129,74 +92,56 @@ export async function getUDP2(context, errorFlag?) {
} else { } else {
const result = JSON.parse(data) const result = JSON.parse(data)
console.log(` getUDP2 has IPConfigTable `); console.log(` getUDP2 has IPConfigTable `);
if (globalThis.udpClient2 && globalThis.udpClient2.closeUdp) { // 未绑定
console.log(` getUDP2 has udclent ,close and rebind `); console.log(` getUDP2 has no udclent and bind `);
globalThis.udpClient2.closeUdp(async () => { const udpClient2: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, '8800', globalThis.carInfo?.udpAddress, globalThis.carInfo?.messagePort)
setTimeout(() => { console.info('surenjun udp2=> ', globalThis.carInfo?.messagePort)
globalThis.udpClient2.rebindUdp(result.udplocalIp, '8800', globalThis.carInfo?.udpAddress, globalThis.carInfo?.messagePort) udpClient2.bindUdp()
globalThis.udpClient2.onError_Callback(() => { udpClient2.onError_Callback(() => {
getUDP2(context, true); getUDP2(context, true);
if (errorFlag && globalThis.udpClient2 && globalThis.udpClient2.onMessage_2) { if (errorFlag && globalThis.udpClient2 && globalThis.udpClient2.onMessage_2) {
globalThis.udpClient2.onMessage_2 = globalThis.udpClient2.onMessage_2 globalThis.udpClient2.onMessage_2 = globalThis.udpClient2.onMessage_2
} }
}) })
}, 1000) if (!errorFlag) {
}) udpClient2.onMessage_2((val) => {
} if (val.id == '32') {
else { globalThis.signNum = val.body[1]
// 未绑定 if (val.body[0] == 5) {
console.log(` getUDP2 has no udclent and bind `); console.info('surenjun', `接收到平台扣分请求,请求指令为:${val.body[1]}`)
const udpClient2: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, '8800', globalThis.carInfo?.udpAddress, globalThis.carInfo?.messagePort) globalThis.udpEvent.sendOnKf(val.body[1])
console.info('surenjun udp2=> ', globalThis.carInfo?.messagePort) }
udpClient2.bindUdp() if (val.body[0] == 11) {
udpClient2.onError_Callback(() => { console.info('surenjun', 'GlobalUdp收到beginExam事件')
getUDP2(context, true); globalThis.udpEvent.sendBeginExam(val.body[1])
if (errorFlag && globalThis.udpClient2 && globalThis.udpClient2.onMessage_2) { }
globalThis.udpClient2.onMessage_2 = globalThis.udpClient2.onMessage_2 if (val.body[0] == 12) {
console.info('surenjun', 'GlobalUdp收到endExam事件')
globalThis.udpEvent.sendEndExam(val.body[1])
}
}
if (val.id == '36') {
//获取远程扣分内容
console.info('surenjun', '考车收到远程扣分项目内容,扣分代码:' + val.body[0])
globalThis.udpEvent.sendKfContent(val.body[0])
} else if (val.id == '46') {
let tmpList = []
const str = globalThis.lsh
for (let i = 0; i < str.length; i++) {
tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0])
}
const param = {
id: 47,
list: tmpList,
carNo: globalThis.carInfo.carNo,
placeId: globalThis.carInfo.examinationRoomId
}
globalThis.udpClient2.send(param)
} }
}) })
if (!errorFlag) {
udpClient2.onMessage_2((val) => {
if (val.id == '32') {
globalThis.signNum = val.body[1]
if (val.body[0] == 5) {
console.info('surenjun', `接收到平台扣分请求,请求指令为:${val.body[1]}`)
globalThis.udpEvent.sendOnKf(val.body[1])
}
if (val.body[0] == 11) {
console.info('surenjun', 'GlobalUdp收到beginExam事件')
globalThis.udpEvent.sendBeginExam(val.body[1])
}
if (val.body[0] == 12) {
console.info('surenjun', 'GlobalUdp收到endExam事件')
globalThis.udpEvent.sendEndExam(val.body[1])
}
}
if (val.id == '36') {
//获取远程扣分内容
console.info('surenjun', '考车收到远程扣分项目内容,扣分代码:' + val.body[0])
globalThis.udpEvent.sendKfContent(val.body[0])
} else if (val.id == '46') {
let tmpList = []
const str = globalThis.lsh
for (let i = 0; i < str.length; i++) {
tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0])
}
const param = {
id: 47,
list: tmpList,
carNo: globalThis.carInfo.carNo,
placeId: globalThis.carInfo.examinationRoomId
}
globalThis.udpClient2.send(param)
}
})
}
globalThis.udpClient2 = udpClient2
} }
globalThis.udpClient2 = udpClient2
} }
return
} }
export async function setTopLineUdp() { export async function setTopLineUdp() {
@ -227,7 +172,6 @@ export async function setJudgeUdp() {
// const config = await getSyncData('IpConfigTable'); // const config = await getSyncData('IpConfigTable');
let udpIndex = 0; let udpIndex = 0;
let currentUdpIndex = 0; let currentUdpIndex = 0;
let judgeUdpTimer
clearInterval(globalThis.judgeUdpTimer) clearInterval(globalThis.judgeUdpTimer)
globalThis.judgeUdpTimer = setInterval(() => { globalThis.judgeUdpTimer = setInterval(() => {
udpIndex += 1; udpIndex += 1;