优化udp
This commit is contained in:
		
							parent
							
								
									34f77cac8d
								
							
						
					
					
						commit
						bb893dcc6e
					
				@ -1,237 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 | 
					 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 | 
				
			||||||
 * you may not use this file except in compliance with the License.
 | 
					 | 
				
			||||||
 * You may obtain a copy of the License at
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
 * See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
 * limitations under the License.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import socket from '@ohos.net.socket';
 | 
					 | 
				
			||||||
import { Array2Byte } from '../utils/tools'
 | 
					 | 
				
			||||||
import {getChuankouFn} from '../../common/service/indexService'
 | 
					 | 
				
			||||||
import {getUDP} from './GlobalUdp'
 | 
					 | 
				
			||||||
const TAG = 'socketTag[PLC.UdpClient]'
 | 
					 | 
				
			||||||
import prompt from '@ohos.prompt'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import hilog from '@ohos.hilog';
 | 
					 | 
				
			||||||
let num=0
 | 
					 | 
				
			||||||
export default class UdpClient {
 | 
					 | 
				
			||||||
  private localIp: string = ''
 | 
					 | 
				
			||||||
  private localIpPort: string = ''
 | 
					 | 
				
			||||||
  private oppositeIp: string = ''
 | 
					 | 
				
			||||||
  private oppositeIpPort: string = ''
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  private udp: any = null
 | 
					 | 
				
			||||||
  // private stashFn:StashFuncotionon
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  constructor(udplocalIp: string, udplocalIpPort: string, udpOppositeIp: string, udpOppositeIpPort: string) {
 | 
					 | 
				
			||||||
    this.localIp = udplocalIp
 | 
					 | 
				
			||||||
    this.oppositeIp = udpOppositeIp
 | 
					 | 
				
			||||||
    this.localIpPort = udplocalIpPort
 | 
					 | 
				
			||||||
    this.oppositeIpPort = udpOppositeIpPort
 | 
					 | 
				
			||||||
    getChuankouFn()
 | 
					 | 
				
			||||||
    console.log(TAG,'newUdp')
 | 
					 | 
				
			||||||
    // this.stashFn=()=>{}
 | 
					 | 
				
			||||||
    this.udp = socket.constructUDPSocketInstance();
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  rebindUdp(localIp: string, localIpPort: string, oppositeIp: string, oppositeIpPort: string) {
 | 
					 | 
				
			||||||
    console.log(TAG,'rebindUdp',this.localIp,this.localIpPort)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    this.localIp = localIp
 | 
					 | 
				
			||||||
    this.oppositeIp = oppositeIp
 | 
					 | 
				
			||||||
    this.localIpPort = localIpPort
 | 
					 | 
				
			||||||
    this.oppositeIpPort = oppositeIpPort
 | 
					 | 
				
			||||||
    let promise = this.udp.bind({
 | 
					 | 
				
			||||||
      address: this.localIp, port: parseInt(this.localIpPort), family: 1
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    promise.then(() => {
 | 
					 | 
				
			||||||
      globalThis.closeUDPSocket=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      console.log(`${TAG},udpCLient udp rebind success`);
 | 
					 | 
				
			||||||
    }).catch(err => {
 | 
					 | 
				
			||||||
      globalThis.closeUDPSocket=true
 | 
					 | 
				
			||||||
      console.log(`${TAG},udpCLient udp rebind failed:${JSON.stringify(err)}`);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  bindUdp() {
 | 
					 | 
				
			||||||
    console.log(TAG,'udpbind',this.localIp,this.localIpPort)
 | 
					 | 
				
			||||||
    let promise = this.udp.bind({
 | 
					 | 
				
			||||||
      // address: '192.168.7.170', port: 20122, family: 1
 | 
					 | 
				
			||||||
      // address: '192.168.7.170', port: 31013, family: 1
 | 
					 | 
				
			||||||
      address: this.localIp, port: parseInt(this.localIpPort), family: 1
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    promise.then(() => {
 | 
					 | 
				
			||||||
      globalThis.closeUDPSocket=false
 | 
					 | 
				
			||||||
      console.log(`${TAG}udpCLient udp bind success`);
 | 
					 | 
				
			||||||
    }).catch(err => {
 | 
					 | 
				
			||||||
      globalThis.closeUDPSocket=true
 | 
					 | 
				
			||||||
      console.log(`${TAG}udpCLient udp bind failed:${JSON.stringify(err)}`);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  setMsgCallBack(callback){
 | 
					 | 
				
			||||||
    // this.stashFn=callback?callback:()=>{}
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  sendMsg(msg) {
 | 
					 | 
				
			||||||
    console.log(TAG,'UdpSend1111',this.oppositeIp,this.oppositeIpPort)
 | 
					 | 
				
			||||||
    this.udp.getState((err, data) => {
 | 
					 | 
				
			||||||
      if (err) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        console.log('getState fail');
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        let promise = this.udp.send({
 | 
					 | 
				
			||||||
          data: msg,
 | 
					 | 
				
			||||||
          address: {
 | 
					 | 
				
			||||||
            // address: '192.168.7.124',
 | 
					 | 
				
			||||||
            // port: 30013,
 | 
					 | 
				
			||||||
            // address: '192.168.7.124',
 | 
					 | 
				
			||||||
            // port: 20022,
 | 
					 | 
				
			||||||
            address: this.oppositeIp,
 | 
					 | 
				
			||||||
            port: parseInt(this.oppositeIpPort),
 | 
					 | 
				
			||||||
            family: 1
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        promise.then(() => {
 | 
					 | 
				
			||||||
          console.log(`${TAG}udpCLient udp send success:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`);
 | 
					 | 
				
			||||||
        }).catch(err => {
 | 
					 | 
				
			||||||
          console.log(`${TAG}udpCLient udp send fail:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`);
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      console.log('getState success:' + JSON.stringify(data));
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  onError(callback?){
 | 
					 | 
				
			||||||
   this.udp.on('error',async err => {
 | 
					 | 
				
			||||||
     globalThis.closeUDPSocket=true
 | 
					 | 
				
			||||||
     console.log(TAG,'udpError',JSON.stringify(err))
 | 
					 | 
				
			||||||
     await this.bindUdp()
 | 
					 | 
				
			||||||
     await this.sendMsg('111')
 | 
					 | 
				
			||||||
     await this.onMessage(callback)
 | 
					 | 
				
			||||||
     // callback&&callback()
 | 
					 | 
				
			||||||
     // this.closeUdp(()=>{
 | 
					 | 
				
			||||||
     //   this.bindUdp()
 | 
					 | 
				
			||||||
     // })
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  onMessage(callback?) {
 | 
					 | 
				
			||||||
    console.info(TAG, '注册udp message监听事件')
 | 
					 | 
				
			||||||
    this.udp.on('message', value => {
 | 
					 | 
				
			||||||
      console.log(TAG,'udponmessage')
 | 
					 | 
				
			||||||
      // 收到的是ArrayBuffer 需要进行转换解析
 | 
					 | 
				
			||||||
      globalThis.plcUdpError = false
 | 
					 | 
				
			||||||
      if (value) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        let dataView = new DataView(value.message)
 | 
					 | 
				
			||||||
        //            console.log(`${TAG} udp message length:${dataView?.byteLength}`);
 | 
					 | 
				
			||||||
        let str = ""
 | 
					 | 
				
			||||||
        for (let i = 0; i < dataView?.byteLength; ++i) {
 | 
					 | 
				
			||||||
          let c = String.fromCharCode(dataView?.getUint8(i))
 | 
					 | 
				
			||||||
          if (c !== "\n") {
 | 
					 | 
				
			||||||
            str += c
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        console.log(`${TAG} udp on message array buffer:${str}`);
 | 
					 | 
				
			||||||
        let strachArr = str.split(',')
 | 
					 | 
				
			||||||
        if (strachArr[0] != '#DN_GD') {
 | 
					 | 
				
			||||||
          return
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        console.log(`${TAG} udp222 on message array buffer:${str}`);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        strachArr[28]=globalThis.chuankoMsg||'0'
 | 
					 | 
				
			||||||
        // this.stashFn(str)
 | 
					 | 
				
			||||||
        const newArr=JSON.parse(JSON.stringify(strachArr))
 | 
					 | 
				
			||||||
        // this.stashFn=()=>{}
 | 
					 | 
				
			||||||
        callback&&callback(newArr.toString())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        callback&&callback('')
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    const arrRed = [0x55, 0xaa, 0x01, 0x01, 0x02, 0x00, 0x03, 0x00];
 | 
					 | 
				
			||||||
    const arrBlue = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00];
 | 
					 | 
				
			||||||
    const arrGreen = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01];
 | 
					 | 
				
			||||||
    const arrBlueBuffer = Array2Byte(arrBlue).buffer
 | 
					 | 
				
			||||||
    const arrRedBuffer = Array2Byte(arrRed).buffer
 | 
					 | 
				
			||||||
    const arrGreenBugger = Array2Byte(arrGreen).buffer
 | 
					 | 
				
			||||||
    //监听udp是否断开
 | 
					 | 
				
			||||||
    clearInterval(globalThis.messageTimer)
 | 
					 | 
				
			||||||
    globalThis.messageTimer = setInterval(() => {
 | 
					 | 
				
			||||||
      const lightLineUdp = globalThis.lightLineUdp
 | 
					 | 
				
			||||||
      const isJudge = globalThis.isJudge
 | 
					 | 
				
			||||||
      setTimeout(async () => {
 | 
					 | 
				
			||||||
        //程序断开
 | 
					 | 
				
			||||||
        lightLineUdp?.send(globalThis.plcUdpError ? arrRedBuffer : (isJudge ? arrGreenBugger : arrBlueBuffer));
 | 
					 | 
				
			||||||
        if (globalThis.plcUdpError) {
 | 
					 | 
				
			||||||
          // num++
 | 
					 | 
				
			||||||
          console.log(TAG,'plc udp信号丢失')
 | 
					 | 
				
			||||||
          // if(num==3){
 | 
					 | 
				
			||||||
            getUDP(globalThis.context,true)
 | 
					 | 
				
			||||||
            // await this.bindUdp()
 | 
					 | 
				
			||||||
            // await this.sendMsg('111')
 | 
					 | 
				
			||||||
            // await this.onMessage(callback)
 | 
					 | 
				
			||||||
            // num=0
 | 
					 | 
				
			||||||
          // }
 | 
					 | 
				
			||||||
          prompt.showToast({
 | 
					 | 
				
			||||||
            message: 'plc udp信号丢失',
 | 
					 | 
				
			||||||
            duration: 2000
 | 
					 | 
				
			||||||
          });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        globalThis.plcUdpError = true;
 | 
					 | 
				
			||||||
      }, 2000)
 | 
					 | 
				
			||||||
    }, 3000)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  closeUdp(callback) {
 | 
					 | 
				
			||||||
    this.udp.close(err => {
 | 
					 | 
				
			||||||
      hilog.info(0x0000,TAG, 'udpCLient', 'close');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (err) {
 | 
					 | 
				
			||||||
        hilog.info(0x0000,TAG, 'udpCLient', 'closeonerror');
 | 
					 | 
				
			||||||
        globalThis.closeUDPSocket=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        globalThis.closeUDPSocket=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.udp.getState((err, data) => {
 | 
					 | 
				
			||||||
          if (err) {
 | 
					 | 
				
			||||||
            console.log('getState fail');
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
          } else {
 | 
					 | 
				
			||||||
            if (!data.isisClose) {
 | 
					 | 
				
			||||||
              setTimeout(() => {
 | 
					 | 
				
			||||||
                callback()
 | 
					 | 
				
			||||||
              }, 1000)
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          console.log('getState success:' + JSON.stringify(data));
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
        // let promise = this.udp.getState({});
 | 
					 | 
				
			||||||
        // promise.then(data => {
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        //     console.log('getState success:' + JSON.stringify(data));
 | 
					 | 
				
			||||||
        // }).catch(err => {
 | 
					 | 
				
			||||||
        //     callback()
 | 
					 | 
				
			||||||
        //     console.log('getState fail');
 | 
					 | 
				
			||||||
        // });
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
interface StashFunction {
 | 
					 | 
				
			||||||
  (str: string)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
import router from '@ohos.router';
 | 
					import router from '@ohos.router';
 | 
				
			||||||
import UdpClient from '../../common/utils/UdpClient';
 | 
					 | 
				
			||||||
import FileLog from '../judgeSDK/utils/fileLog';
 | 
					import FileLog from '../judgeSDK/utils/fileLog';
 | 
				
			||||||
import RealTime from '../compontents/judge/RealTime';
 | 
					import RealTime from '../compontents/judge/RealTime';
 | 
				
			||||||
import { GPSData, SignalData } from '../../mock';
 | 
					import { GPSData, SignalData } from '../../mock';
 | 
				
			||||||
@ -24,7 +23,6 @@ export default struct SignDisplayCom {
 | 
				
			|||||||
  @State @Watch('outClick') outFlag: boolean = false;
 | 
					  @State @Watch('outClick') outFlag: boolean = false;
 | 
				
			||||||
  @State url: string = ''
 | 
					  @State url: string = ''
 | 
				
			||||||
  private timer = null
 | 
					  private timer = null
 | 
				
			||||||
  private udpClient: UdpClient = null
 | 
					 | 
				
			||||||
  private FileLog: FileLog
 | 
					  private FileLog: FileLog
 | 
				
			||||||
  private vocObj = null;
 | 
					  private vocObj = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
import router from '@ohos.router';
 | 
					import router from '@ohos.router';
 | 
				
			||||||
import UdpClient from '../../common/utils/UdpClient';
 | 
					 | 
				
			||||||
import FileLog from '../judgeSDK/utils/fileLog';
 | 
					import FileLog from '../judgeSDK/utils/fileLog';
 | 
				
			||||||
import RealTime from '../compontents/judge/RealTime';
 | 
					import RealTime from '../compontents/judge/RealTime';
 | 
				
			||||||
import { GPSData, SignalData } from '../../mock';
 | 
					import { GPSData, SignalData } from '../../mock';
 | 
				
			||||||
@ -23,7 +22,6 @@ export default struct SignDisplayCom {
 | 
				
			|||||||
  @State @Watch('outClick') outFlag: boolean = false;
 | 
					  @State @Watch('outClick') outFlag: boolean = false;
 | 
				
			||||||
  @State url: string = ''
 | 
					  @State url: string = ''
 | 
				
			||||||
  private timer = null
 | 
					  private timer = null
 | 
				
			||||||
  private udpClient: UdpClient = null
 | 
					 | 
				
			||||||
  private FileLog: FileLog
 | 
					  private FileLog: FileLog
 | 
				
			||||||
  private vocObj = null;
 | 
					  private vocObj = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										75
									
								
								entry/src/main/ets/utils/UdpUtils.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								entry/src/main/ets/utils/UdpUtils.ets
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					import socket from '@ohos.net.socket'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type DealMethod = (value: ArrayBuffer) => string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UdpClient {
 | 
				
			||||||
 | 
					  private localIp: string = ''
 | 
				
			||||||
 | 
					  private localIpPort: string = ''
 | 
				
			||||||
 | 
					  private oppositeIp: string = ''
 | 
				
			||||||
 | 
					  private oppositeIpPort: string = ''
 | 
				
			||||||
 | 
					  private messageEvents: Array<Function> = []
 | 
				
			||||||
 | 
					  private udp: socket.UDPSocket = null
 | 
				
			||||||
 | 
					  private disconnectEvents: Array<Function> = []
 | 
				
			||||||
 | 
					  private dealMethod: DealMethod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private dealMessage() {
 | 
				
			||||||
 | 
					    this.udp?.on("message", value => {
 | 
				
			||||||
 | 
					      let result = this?.dealMethod(value.message)
 | 
				
			||||||
 | 
					      this.messageEvents.forEach(cb => {
 | 
				
			||||||
 | 
					        cb(result)
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  init(udpLocalIp: string, udpLocalIpPort: string, udpOppositeIp: string, udpOppositeIpPort: string) {
 | 
				
			||||||
 | 
					    this.localIp = udpLocalIp
 | 
				
			||||||
 | 
					    this.oppositeIp = udpOppositeIp
 | 
				
			||||||
 | 
					    this.localIpPort = udpLocalIpPort
 | 
				
			||||||
 | 
					    this.oppositeIpPort = udpOppositeIpPort
 | 
				
			||||||
 | 
					    this.udp = socket.constructUDPSocketInstance();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bindUdp(): Promise<void> {
 | 
				
			||||||
 | 
					    return this.udp.bind({ address: this.localIp, port: parseInt(this.localIpPort), family: 1 }).then(() => {
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        this.dealMessage()
 | 
				
			||||||
 | 
					        return Promise.resolve()
 | 
				
			||||||
 | 
					      } catch (e) {
 | 
				
			||||||
 | 
					        return Promise.reject(e)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  async reBind() {
 | 
				
			||||||
 | 
					    await this.close()
 | 
				
			||||||
 | 
					    this.udp = socket.constructUDPSocketInstance();
 | 
				
			||||||
 | 
					    await this.bindUdp()
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  close(): Promise<void> {
 | 
				
			||||||
 | 
					    return this.udp?.close()
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  setDealMethod(fun: DealMethod) {
 | 
				
			||||||
 | 
					    this.dealMethod = fun
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onMessage(callback: Function) {
 | 
				
			||||||
 | 
					    this.messageEvents.push(callback)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onDisconnect(callback: Function) {
 | 
				
			||||||
 | 
					    this.disconnectEvents.push(callback)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sendMsg(data: string): Promise<void> {
 | 
				
			||||||
 | 
					    return this.udp?.getState().then(() => {
 | 
				
			||||||
 | 
					      return this.udp.send({
 | 
				
			||||||
 | 
					        data,
 | 
				
			||||||
 | 
					        address: { address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1 }
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const udpClient = new UdpClient()
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user