优化tcp

This commit is contained in:
lixiao 2025-05-15 19:28:08 +08:00
parent 7dfc959aa2
commit 16e035713b
2 changed files with 36 additions and 27 deletions

View File

@ -20,14 +20,21 @@ export async function getTCP(flag = false) {
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(() => {
clearInterval(globalThis.intervalSendMsg)
globalThis.intervalSendMsg = setInterval(() => {
if (!globalThis.getCloseTcp) {
globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
globalThis.tcpStep += 1
if (globalThis.tcpStep > 30) {
globalThis.tcpStep = 0
getTCP()
console.log('tcp重连开始')
}
}
}, 1000 / 3)
globalThis.TcpClient.onError((val) => {
@ -42,7 +49,6 @@ export async function getTCP(flag = false) {
globalThis.udpClientGps2?.sendMsg(val)
}
}, 1000)
})
}
return

View File

@ -1,6 +1,7 @@
import socket from '@ohos.net.socket';
import hilog from '@ohos.hilog';
import { getTCP } from './GlobalTcp';
import prompt from '@ohos.prompt';
import FileUtil from './File';
import { dateFormat } from './tools';
@ -26,7 +27,6 @@ export default class TcpClient {
this.oppositeIpPort = tcpOppositePort
console.log(TAG, 'new Tcp', this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort)
this.tcp = socket.constructTCPSocketInstance();
this.initPath()
}
onError(callback?) {
@ -39,7 +39,6 @@ export default class TcpClient {
});
}
bindTcp() {
return new Promise((resolve, reject) => {
this.tcp.bind({
@ -49,7 +48,8 @@ export default class TcpClient {
setTimeout(async () => {
getTCP()
}, 2000)
console.log('bind tcp error', JSON.stringify(err));
console.log('getCloseTBinderror');
hilog.info(0x0000, 'testTag', "tcpBinderror:" + JSON.stringify(err));
resolve(true)
return
}
@ -61,17 +61,18 @@ export default class TcpClient {
connectTcp() {
return new Promise((resolve, reject) => {
console.log("tcp connect", this.oppositeIp, Number(this.oppositeIpPort))
this.tcp.connect({
let promise = this.tcp.connect({
address: {
address: this.oppositeIp, port: Number(this.oppositeIpPort), family: 1
}, timeout: 1000 * 15
}).then(() => {
});
promise.then(() => {
this.tcp.setExtraOptions({
keepAlive: true,
}, err => {
if (err) {
console.log('tcp connect alive error', JSON.stringify(err))
console.log('getCloseTconnectsuccess', 'error', globalThis.getCloseTcp)
setTimeout(() => {
getTCP()
resolve(false)
@ -79,10 +80,11 @@ export default class TcpClient {
return;
}
});
globalThis.getCloseTcp = false
resolve(true)
}).catch(err => {
console.log('tcp connect', 'error', JSON.stringify(err))
console.log('socketTag', 'error')
setTimeout(() => {
getTCP()
resolve(false)
@ -92,13 +94,15 @@ export default class TcpClient {
}
sendMsg(msg: string) {
return new Promise((reslove, reject) => {
return new Promise((resolve, reject) => {
let promise = this.tcp.send({
data: msg
});
promise.then(() => {
reslove(true)
console.log(`${TAG} TCP send success`)
resolve(true)
}).catch(err => {
console.log(`${TAG} TCP send error ${JSON.stringify(err)}`)
this.tcpSendNum++
if (!globalThis.getCloseTcp && this.tcpSendNum > 10) {
setTimeout(async () => {
@ -108,22 +112,20 @@ export default class TcpClient {
return
}
globalThis.getCloseTcp = true
console.log(`${TAG} TCPsend error ${JSON.stringify(err)}`)
// this.writeLog({
// time:dateFormat(new Date()),
// message: `${TAG} TCPsend error ${JSON.stringify(err)}`,
// })
reslove(false)
reject(false)
});
})
}
onMessage(callback?) {
this.tcp.on('message', value => {
globalThis.tcpStep = 0
globalThis.tcpUdpError = false
if (value) {
let dataView = new DataView(value.message)
const Arraybuffer = value.message.slice(5, dataView?.byteLength);
callback && callback(Arraybuffer)
} else {
callback && callback('')
@ -133,19 +135,17 @@ export default class TcpClient {
//程序断开
if (globalThis.tcpUdpError) {
console.log(TAG, 'tcp信号丢失')
prompt.showToast({
message: 'tcp信号丢失',
duration: 2000
});
}
globalThis.tcpUdpError = true;
}, 3000)
// callback(value.message)
});
}
async initPath() {
return
const fileUtil = new FileUtil(globalThis.context)
const date = dateFormat(new Date).split(' ')[0]
this.folderPath = await fileUtil.initFolder(`/PLC/${date}`);
}
offTcp(callback) {
console.log(TAG, 'tcpofff')
this.tcp.off('message', callback);
@ -156,6 +156,8 @@ export default class TcpClient {
console.log(TAG, 'tcpClose')
this.tcp.close().then(() => {
globalThis.getCloseTcp = true
console.log('getCloseTcpsocketTagclose', 'success', globalThis.getCloseTcp)
console.log(TAG, 'tcpCloseSuccess')
callback()
resolve(true)
@ -163,7 +165,8 @@ export default class TcpClient {
setTimeout(async () => {
getTCP(true)
}, 9000)
console.log('close tcp', 'error', globalThis.getCloseTcp)
console.log('getCloseTcpsocketTagclose', 'error', globalThis.getCloseTcp)
resolve(false)
});
})