优化tcp
This commit is contained in:
parent
7dfc959aa2
commit
16e035713b
@ -20,14 +20,21 @@ export async function getTCP(flag = false) {
|
|||||||
console.log("tcp init", result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort)
|
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)
|
const tcpClient: TcpClient = new TcpClient(result.tcplocalIp, result.tcplocalIpPort, result.tcpOppositeIp, result.tcpOppositePort)
|
||||||
globalThis.TcpClient = tcpClient
|
globalThis.TcpClient = tcpClient
|
||||||
|
|
||||||
await globalThis.TcpClient.bindTcp()
|
await globalThis.TcpClient.bindTcp()
|
||||||
await globalThis.TcpClient.connectTcp()
|
await globalThis.TcpClient.connectTcp()
|
||||||
await globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
|
await globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
|
||||||
|
|
||||||
clearInterval(globalThis.intervalSendmsg)
|
clearInterval(globalThis.intervalSendMsg)
|
||||||
globalThis.intervalSendmsg = setInterval(() => {
|
globalThis.intervalSendMsg = setInterval(() => {
|
||||||
if (!globalThis.getCloseTcp) {
|
if (!globalThis.getCloseTcp) {
|
||||||
globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
|
globalThis.TcpClient.sendMsg(globalThis.carInfo.carNo) //1002
|
||||||
|
globalThis.tcpStep += 1
|
||||||
|
if (globalThis.tcpStep > 30) {
|
||||||
|
globalThis.tcpStep = 0
|
||||||
|
getTCP()
|
||||||
|
console.log('tcp重连开始')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, 1000 / 3)
|
}, 1000 / 3)
|
||||||
globalThis.TcpClient.onError((val) => {
|
globalThis.TcpClient.onError((val) => {
|
||||||
@ -42,7 +49,6 @@ export async function getTCP(flag = false) {
|
|||||||
globalThis.udpClientGps2?.sendMsg(val)
|
globalThis.udpClientGps2?.sendMsg(val)
|
||||||
}
|
}
|
||||||
}, 1000)
|
}, 1000)
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import socket from '@ohos.net.socket';
|
import socket from '@ohos.net.socket';
|
||||||
import hilog from '@ohos.hilog';
|
import hilog from '@ohos.hilog';
|
||||||
import { getTCP } from './GlobalTcp';
|
import { getTCP } from './GlobalTcp';
|
||||||
|
import prompt from '@ohos.prompt';
|
||||||
import FileUtil from './File';
|
import FileUtil from './File';
|
||||||
import { dateFormat } from './tools';
|
import { dateFormat } from './tools';
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ export default class TcpClient {
|
|||||||
this.oppositeIpPort = tcpOppositePort
|
this.oppositeIpPort = tcpOppositePort
|
||||||
console.log(TAG, 'new Tcp', this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort)
|
console.log(TAG, 'new Tcp', this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort)
|
||||||
this.tcp = socket.constructTCPSocketInstance();
|
this.tcp = socket.constructTCPSocketInstance();
|
||||||
this.initPath()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onError(callback?) {
|
onError(callback?) {
|
||||||
@ -39,7 +39,6 @@ export default class TcpClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bindTcp() {
|
bindTcp() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.tcp.bind({
|
this.tcp.bind({
|
||||||
@ -49,7 +48,8 @@ export default class TcpClient {
|
|||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
getTCP()
|
getTCP()
|
||||||
}, 2000)
|
}, 2000)
|
||||||
console.log('bind tcp error', JSON.stringify(err));
|
console.log('getCloseTBinderror');
|
||||||
|
hilog.info(0x0000, 'testTag', "tcpBinderror:" + JSON.stringify(err));
|
||||||
resolve(true)
|
resolve(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -61,17 +61,18 @@ export default class TcpClient {
|
|||||||
|
|
||||||
connectTcp() {
|
connectTcp() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log("tcp connect", this.oppositeIp, Number(this.oppositeIpPort))
|
let promise = this.tcp.connect({
|
||||||
this.tcp.connect({
|
|
||||||
address: {
|
address: {
|
||||||
address: this.oppositeIp, port: Number(this.oppositeIpPort), family: 1
|
address: this.oppositeIp, port: Number(this.oppositeIpPort), family: 1
|
||||||
}, timeout: 1000 * 15
|
}, timeout: 1000 * 15
|
||||||
}).then(() => {
|
});
|
||||||
|
|
||||||
|
promise.then(() => {
|
||||||
this.tcp.setExtraOptions({
|
this.tcp.setExtraOptions({
|
||||||
keepAlive: true,
|
keepAlive: true,
|
||||||
}, err => {
|
}, err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log('tcp connect alive error', JSON.stringify(err))
|
console.log('getCloseTconnectsuccess', 'error', globalThis.getCloseTcp)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
getTCP()
|
getTCP()
|
||||||
resolve(false)
|
resolve(false)
|
||||||
@ -79,10 +80,11 @@ export default class TcpClient {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
globalThis.getCloseTcp = false
|
globalThis.getCloseTcp = false
|
||||||
resolve(true)
|
resolve(true)
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.log('tcp connect', 'error', JSON.stringify(err))
|
console.log('socketTag', 'error')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
getTCP()
|
getTCP()
|
||||||
resolve(false)
|
resolve(false)
|
||||||
@ -92,13 +94,15 @@ export default class TcpClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sendMsg(msg: string) {
|
sendMsg(msg: string) {
|
||||||
return new Promise((reslove, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let promise = this.tcp.send({
|
let promise = this.tcp.send({
|
||||||
data: msg
|
data: msg
|
||||||
});
|
});
|
||||||
promise.then(() => {
|
promise.then(() => {
|
||||||
reslove(true)
|
console.log(`${TAG} TCP send success`)
|
||||||
|
resolve(true)
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
|
console.log(`${TAG} TCP send error ${JSON.stringify(err)}`)
|
||||||
this.tcpSendNum++
|
this.tcpSendNum++
|
||||||
if (!globalThis.getCloseTcp && this.tcpSendNum > 10) {
|
if (!globalThis.getCloseTcp && this.tcpSendNum > 10) {
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
@ -108,22 +112,20 @@ export default class TcpClient {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
globalThis.getCloseTcp = true
|
globalThis.getCloseTcp = true
|
||||||
console.log(`${TAG} TCPsend error ${JSON.stringify(err)}`)
|
reject(false)
|
||||||
// this.writeLog({
|
|
||||||
// time:dateFormat(new Date()),
|
|
||||||
// message: `${TAG} TCPsend error ${JSON.stringify(err)}`,
|
|
||||||
// })
|
|
||||||
reslove(false)
|
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
onMessage(callback?) {
|
onMessage(callback?) {
|
||||||
this.tcp.on('message', value => {
|
this.tcp.on('message', value => {
|
||||||
|
globalThis.tcpStep = 0
|
||||||
globalThis.tcpUdpError = false
|
globalThis.tcpUdpError = false
|
||||||
|
|
||||||
if (value) {
|
if (value) {
|
||||||
let dataView = new DataView(value.message)
|
let dataView = new DataView(value.message)
|
||||||
const Arraybuffer = value.message.slice(5, dataView?.byteLength);
|
const Arraybuffer = value.message.slice(5, dataView?.byteLength);
|
||||||
|
|
||||||
callback && callback(Arraybuffer)
|
callback && callback(Arraybuffer)
|
||||||
} else {
|
} else {
|
||||||
callback && callback('')
|
callback && callback('')
|
||||||
@ -133,19 +135,17 @@ export default class TcpClient {
|
|||||||
//程序断开
|
//程序断开
|
||||||
if (globalThis.tcpUdpError) {
|
if (globalThis.tcpUdpError) {
|
||||||
console.log(TAG, 'tcp信号丢失')
|
console.log(TAG, 'tcp信号丢失')
|
||||||
|
prompt.showToast({
|
||||||
|
message: 'tcp信号丢失',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
}
|
}
|
||||||
globalThis.tcpUdpError = true;
|
globalThis.tcpUdpError = true;
|
||||||
}, 3000)
|
}, 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) {
|
offTcp(callback) {
|
||||||
console.log(TAG, 'tcpofff')
|
console.log(TAG, 'tcpofff')
|
||||||
this.tcp.off('message', callback);
|
this.tcp.off('message', callback);
|
||||||
@ -156,6 +156,8 @@ export default class TcpClient {
|
|||||||
console.log(TAG, 'tcpClose')
|
console.log(TAG, 'tcpClose')
|
||||||
this.tcp.close().then(() => {
|
this.tcp.close().then(() => {
|
||||||
globalThis.getCloseTcp = true
|
globalThis.getCloseTcp = true
|
||||||
|
console.log('getCloseTcpsocketTagclose', 'success', globalThis.getCloseTcp)
|
||||||
|
|
||||||
console.log(TAG, 'tcpCloseSuccess')
|
console.log(TAG, 'tcpCloseSuccess')
|
||||||
callback()
|
callback()
|
||||||
resolve(true)
|
resolve(true)
|
||||||
@ -163,7 +165,8 @@ export default class TcpClient {
|
|||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
getTCP(true)
|
getTCP(true)
|
||||||
}, 9000)
|
}, 9000)
|
||||||
console.log('close tcp', 'error', globalThis.getCloseTcp)
|
console.log('getCloseTcpsocketTagclose', 'error', globalThis.getCloseTcp)
|
||||||
|
|
||||||
resolve(false)
|
resolve(false)
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user