diff --git a/entry/src/main/ets/common/utils/GlobalTcp.ts b/entry/src/main/ets/common/utils/GlobalTcp.ts index f8648cec..7faf56cd 100644 --- a/entry/src/main/ets/common/utils/GlobalTcp.ts +++ b/entry/src/main/ets/common/utils/GlobalTcp.ts @@ -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 diff --git a/entry/src/main/ets/common/utils/TcpClient.ts b/entry/src/main/ets/common/utils/TcpClient.ts index 2faec74d..0a641692 100644 --- a/entry/src/main/ets/common/utils/TcpClient.ts +++ b/entry/src/main/ets/common/utils/TcpClient.ts @@ -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) }); })