const { getConnection, writeData } = require('./pav-client'); const { dumyData } = require('./pav-utils'); // const host = "192.168.0.24" const host = "localhost" // const host = '211.253.38.218'; // const port = 8082; const port = 8888; const prefix = 'TEST-DRON-'; const severalDrones = cnt => { // 클라이언트 정보 저장공간 const clients = []; // 최초 좌표 // y - y' : 37.57 -> 35.36 // x - x' : 126.60 -> 128.94 const firstCoord = [37.57, 126.6]; const lastCoord = [35.36, 128.94]; // 좌표 차이 계산 const diffX = firstCoord[0] - lastCoord[0]; const diffY = lastCoord[1] - firstCoord[1]; // 구분점 const divCnt = Math.round(Math.sqrt(cnt)); const divDiifX = diffX / divCnt; const divDiifY = diffY / divCnt; // 초기값 저장 for (let i = 0; i < cnt; i++) { const client = {}; const suffix = i.toString().padStart(3, '0'); const dronName = prefix + suffix; // client client.dronName = dronName; client.socket = getConnection(dronName, host, port); const divX = i % divCnt; const divY = Math.floor(i / divCnt); const x = Number((firstCoord[0] - divX * divDiifX).toFixed(5)) || 0; const y = Number((firstCoord[1] + divY * divDiifY).toFixed(5)) || 0; const initialData = { ...dumyData, terminalId: dronName, body: [ { ...dumyData.body[0], objectId: dronName, lat: x, lon: y } ] }; client.data = initialData; clients.push(client); } return clients; }; // const clients = severalDrones(100); const dist = 0.01; const sendData = cnt => { const direction = Math.floor(cnt / 10) % 4; clients.forEach(item => { switch (direction) { case 1: item.data.body[0].lat = Number( (item.data.body[0].lat - dist).toFixed(5) ); break; case 2: item.data.body[0].lon = Number( (item.data.body[0].lon - dist).toFixed(5) ); break; case 3: item.data.body[0].lat = Number( (item.data.body[0].lat + dist).toFixed(5) ); break; default: item.data.body[0].lon = Number( (item.data.body[0].lon + dist).toFixed(5) ); break; } writeData(item.socket, JSON.stringify(item.data)); }); if (cnt >= 39) cnt = null; iteratorSendData(++cnt); }; const iteratorSendData = (cnt = 0) => { setTimeout(() => sendData(cnt), 1000); }; iteratorSendData();