Browse Source

Add Client

master
lef_Tso 4 years ago
parent
commit
6686936465
  1. 72
      client/index.js
  2. 17
      client/package.json

72
client/index.js

@ -0,0 +1,72 @@
const io = require('socket.io-client');
const socket = io('http://localhost:3000');
let timeFlag; // Flag to keep track of time passed
let prevData; // Object to store and compare previously sent data
socket.on('connect', () => {
console.log('Connected to server!'); // Client connects to server
// Only happens the first time the client connects to the server
timeFlag = new Date();
prevData = {
temperature: getTemp(),
humAir: getHumAir(),
humGround: getHumGround(),
airSpeed: getAirSpeed(),
}
});
setInterval(() => {
let data = {
temperature: getTemp(),
humAir: getHumAir(),
humGround: getHumGround(),
airSpeed: getAirSpeed(),
}
const now = new Date();
let timeDiff = now - timeFlag;
timeDiff /= 1000;
// If more than 5 minutes have passed or compareData is true
if ((timeDiff > 5) || compareData(data)) {
prevData = data;
timeFlag = new Date();
socket.emit('data', data);
}
}, 2 * 1000); // Every 30s
// Return a test temp from 1-50
getTemp = () => {
return Math.floor(Math.random() * 50);
}
// Return a test air humidity from 1-100
getHumAir = () => {
return Math.floor(Math.random() * 100);
}
// Return a test ground humidity from 1-100
getHumGround = () => {
return Math.floor(Math.random() * 100);
}
// Return a test wind speed from 1-12
getAirSpeed = () => {
return Math.floor(Math.random() * 12);
}
// Compare data with prevData and determine if they need to be send to server
compareData = (data) => {
for (const key in data) {
if (diff(data[key], prevData[key]) > 10)
return true;
}
return false;
}
// Handy function to calculate the % difference
diff = (x, y) => {
return 100 * Math.abs((x - y) / ((x + y) / 2));
}

17
client/package.json

@ -0,0 +1,17 @@
{
"name": "client",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"run": "node index.js",
"dev": "nodemon index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"nodemon": "^2.0.7",
"socket.io-client": "^3.1.0"
}
}
Loading…
Cancel
Save