diff --git a/backend/README.md b/backend/README.md index 4ee2dd727e5f44bab790f763ee37a83ebf7bb317..459a7f51a586b4b7d92c0d780cffeb46ba65e2fb 100644 --- a/backend/README.md +++ b/backend/README.md @@ -7,8 +7,8 @@ cd gateway docker build -t provee-gateway . cd .. -cd app -docker build -t provee-app . +cd projector +docker build -t provee-projector . cd .. docker-compose up diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml index f42b96035916c4afde445958bde6e0560c97e18d..6628e4b3d7afc8f46c33342d62668b5f36c1a58a 100644 --- a/backend/docker-compose.yml +++ b/backend/docker-compose.yml @@ -11,34 +11,7 @@ services: ports: - "9090:9090" environment: - - APP_URL=http://haproxy:8090 - haproxy: - image: haproxy - ports: - - "8090:8090" - volumes: - - ./haproxy:/usr/local/etc/haproxy - app1: - image: provee-app - ports: - - "8091:8090" - environment: - - APPID=1 - app2: - image: provee-app - ports: - - "8092:8090" - environment: - - APPID=2 - app3: - image: provee-app - ports: - - "8093:8090" - environment: - - APPID=3 - app4: - image: provee-app - ports: - - "8094:8090" - environment: - - APPID=4 \ No newline at end of file + - PROJECTOR_URL=http://projector:8090 + projector: + image: provee-projector + scale: 4 \ No newline at end of file diff --git a/backend/gateway/package-lock.json b/backend/gateway/package-lock.json index 83bad860b8e1ec0e223affe2b532c168a3398f12..70a588b7ba8b6b1e0a203c8fd5f4d033f9bb9b95 100644 --- a/backend/gateway/package-lock.json +++ b/backend/gateway/package-lock.json @@ -1,6 +1,6 @@ { - "name": "vuewebgrpc", - "version": "0.1.0", + "name": "provee-gateway", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/backend/gateway/package.json b/backend/gateway/package.json index a1b1c5ae02ca426debc2b145adbf9cba6429f22d..cc46db9b2056065bfe761a2918d046e2eac186c5 100644 --- a/backend/gateway/package.json +++ b/backend/gateway/package.json @@ -1,5 +1,5 @@ { - "name": "gateway", + "name": "provee-gateway", "version": "1.0.0", "description": "", "main": "src/index.js", diff --git a/backend/gateway/src/database.js b/backend/gateway/src/database.js index dce08432179cd5c622ce1f552b0b476badc1a929..88b5177cb943aab5a59cbefb72f139bbd58b1e59 100644 --- a/backend/gateway/src/database.js +++ b/backend/gateway/src/database.js @@ -1,5 +1,3 @@ -const { request } = require('http'); - var Connection = require('tedious').Connection var Request = require('tedious').Request diff --git a/backend/gateway/src/index.js b/backend/gateway/src/index.js index 878943635bbbc612a8138ac117d0e2bf911e6360..4b5302ab3ac39afe2728b1038bfd6cd8234a39a7 100644 --- a/backend/gateway/src/index.js +++ b/backend/gateway/src/index.js @@ -13,7 +13,7 @@ const { callErrorFromStatus } = require('@grpc/grpc-js/build/src/call'); //let connection = mysql.createConnection(config); const port = process.env.PORT || 9090; -const appUrl = process.env.APP_URL || 'http://localhost:8090'; +const projectorUrl = process.env.PROJECTOR_URL || 'http://localhost:8090'; var packageDefinition = protoLoader.loadSync( PROTO_PATH, @@ -28,7 +28,7 @@ var projectorPackage = protoDescriptor.provee; //OLD function sendPoint(call, callback) { - axios.get(`${appUrl}/generatePoint`).then(resp=>{ + axios.get(`${projectorUrl}/generatePoint`).then(resp=>{ callback(null, resp["data"]["point"]); }) } @@ -64,7 +64,7 @@ function sendPointStream(call) { modelID = call.request.modelid; } - var requestURL = `${appUrl}/generatePointStream?modelID=${modelID}`; + var requestURL = `${projectorUrl}/generatePointStream?modelID=${modelID}`; http.get(requestURL, res =>{ diff --git a/backend/haproxy/haproxy.cfg b/backend/haproxy/haproxy.cfg deleted file mode 100644 index 65080b407136dddc659f00a47dbf46646ba3bf0c..0000000000000000000000000000000000000000 --- a/backend/haproxy/haproxy.cfg +++ /dev/null @@ -1,12 +0,0 @@ -frontend http - bind *:8090 - mode http - timeout client 10s - use_backend all - -backend all - mode http - server app1 app1:8090 - server app2 app2:8090 - server app3 app3:8090 - server app4 app4:8090 diff --git a/backend/app/.dockerignore b/backend/projector/.dockerignore similarity index 100% rename from backend/app/.dockerignore rename to backend/projector/.dockerignore diff --git a/backend/app/Dockerfile b/backend/projector/Dockerfile similarity index 100% rename from backend/app/Dockerfile rename to backend/projector/Dockerfile diff --git a/backend/app/package-lock.json b/backend/projector/package-lock.json similarity index 99% rename from backend/app/package-lock.json rename to backend/projector/package-lock.json index 3118f981cef16db28b830089988f304300fc9b01..dcfdaa7a430b008e9b7b46a99a54f57c4e51b695 100644 --- a/backend/app/package-lock.json +++ b/backend/projector/package-lock.json @@ -1,5 +1,5 @@ { - "name": "app", + "name": "provee-projector", "version": "1.0.0", "lockfileVersion": 1, "requires": true, diff --git a/backend/app/package.json b/backend/projector/package.json similarity index 86% rename from backend/app/package.json rename to backend/projector/package.json index a94170c48e9c6190ada27113781e7bf960cce120..8f3a58f0905ef6dfa41ca9aefd8ad6aa217494bf 100644 --- a/backend/app/package.json +++ b/backend/projector/package.json @@ -1,5 +1,5 @@ { - "name": "app", + "name": "provee-projector", "version": "1.0.0", "description": "", "main": "src/index.js", diff --git a/backend/app/src/database.js b/backend/projector/src/database.js similarity index 97% rename from backend/app/src/database.js rename to backend/projector/src/database.js index dce08432179cd5c622ce1f552b0b476badc1a929..88b5177cb943aab5a59cbefb72f139bbd58b1e59 100644 --- a/backend/app/src/database.js +++ b/backend/projector/src/database.js @@ -1,5 +1,3 @@ -const { request } = require('http'); - var Connection = require('tedious').Connection var Request = require('tedious').Request diff --git a/backend/app/src/index.js b/backend/projector/src/index.js similarity index 77% rename from backend/app/src/index.js rename to backend/projector/src/index.js index a354d4734a9d224a2559ccd32551158d849d8d45..57b16d69d3ea8b4f658498908b4ee8c314439707 100644 --- a/backend/app/src/index.js +++ b/backend/projector/src/index.js @@ -1,15 +1,13 @@ const app = require("express")(); -const http = require('http'); const database = require('./database'); //Default at 8090 to enable easy development const port = process.env.PORT || 8090; -const appid = process.env.APPID || 1; //OLD (Single point) app.get("/generatePoint", (req,res) => { console.log("Generating single point") - res.send({"appid": appid, "point": generatePoint()}) + res.send({"point": generatePoint()}) }) //Sends the stream Had to limit the speed with intervals @@ -46,7 +44,7 @@ function sendDatabasePoints(dataList,res){ var point = {id: currentData[0].value, x: currentData[1].value, y:currentData[2].value}; - var response = JSON.stringify({"appid": appid,"point":point}); + var response = JSON.stringify({"point":point}); res.write(response+"\n"); } res.end(); @@ -60,7 +58,7 @@ function streamGeneratedPoints(res){ var intervalId = setInterval(function(){ for(var i = 0; i<100;i++){ - var response = JSON.stringify({"appid": appid,"point":generatePoint()}) + var response = JSON.stringify({"point":generatePoint()}) res.write(response + "\n"); } setTimeout(function() { @@ -74,12 +72,14 @@ function streamGeneratedPoints(res){ //Generate randomPoint -function generatePoint(){ - console.log - var xVal = Math.floor(Math.random()*100); - var yVal = Math.floor(Math.random()*100); - return {id:appid, x:xVal,y:yVal}; - } +let pointId = 0; +function generatePoint() { + const id = pointId++; + const x = Math.floor(Math.random() * 100); + const y = Math.floor(Math.random() * 100); + + return { id, x, y }; +} app.listen(port, () => { console.log(`Server listening at http://0.0.0.0:${port}`); diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 72c56a9f4a7d0884e33cfbeebdc215e9a5785d96..cd12bf22e6d23fa4aedf937e488c8c47be8e9a29 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,6 +1,6 @@ { - "name": "vuewebgrpc", - "version": "0.1.0", + "name": "provee-frontend", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1872,16 +1872,6 @@ "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", "dev": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "cacache": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", @@ -1908,34 +1898,6 @@ "unique-filename": "^1.1.1" } }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, "find-cache-dir": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", @@ -1957,25 +1919,6 @@ "path-exists": "^4.0.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2040,16 +1983,6 @@ "minipass": "^3.1.1" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "terser-webpack-plugin": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", @@ -2066,18 +1999,6 @@ "terser": "^4.6.12", "webpack-sources": "^1.4.3" } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.0.0-rc.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-rc.1.tgz", - "integrity": "sha512-yR+BS90EOXTNieasf8ce9J3TFCpm2DGqoqdbtiwQ33hon3FyIznLX7sKavAq1VmfBnOeV6It0Htg4aniv8ph1g==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } } } }, @@ -2885,6 +2806,16 @@ "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5973,6 +5904,13 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -6150,11 +6088,6 @@ "readable-stream": "^2.0.0" } }, - "fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" - }, "fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -12271,6 +12204,87 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.0.0-rc.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-rc.2.tgz", + "integrity": "sha512-cz8GK4dgIf1UTC+do80pGvh8BHcCRHLIQVHV9ONVQ8wtoqS9t/+H02rKcQP+TVNg7khgLyQV2+8eHUq7/AFq3g==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-resource": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/vue-resource/-/vue-resource-1.5.1.tgz", @@ -12408,6 +12422,7 @@ "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1" } }, @@ -12713,6 +12728,7 @@ "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1" } }, diff --git a/frontend/package.json b/frontend/package.json index c0c3b8fd67e63f70cd4b355364c7059549b37a4c..4324a3c80ffa64ed4e8c2a2e7c019a4683320387 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,8 +1,9 @@ { - "name": "vuewebgrpc", - "version": "0.1.0", + "name": "provee-frontend", + "version": "1.0.0", "private": true, "scripts": { + "start": "npm run serve", "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" @@ -12,7 +13,6 @@ "axios": "^0.20.0", "core-js": "^3.6.5", "d3": "^5.16.0", - "fs": "0.0.1-security", "google-protobuf": "^3.6.1", "grpc": "^1.24.3", "grpc-web": "^1.0.0", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index f7ca6894c663572693cce87e1b4708875efed1c7..b5228701cb30e76c97240b3f17b0f8fa58eac39d 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -47,7 +47,7 @@ export default { addPoint: function(point){ this.streamStarted = true; this.pointList.push(point); - console.log("Received point from ID",point.getId()) + console.log("Received point ID",point.getId()) }, //Update all the components which rely on the data