优化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) | ||||
|     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 | ||||
|  | ||||
| @ -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) | ||||
|       }); | ||||
|     }) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user