diff --git a/echo-websocket/.gitignore b/echo-websocket/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/echo-websocket/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/echo-websocket/Dockerfile b/echo-websocket/Dockerfile new file mode 100644 index 0000000..8ecff9e --- /dev/null +++ b/echo-websocket/Dockerfile @@ -0,0 +1,9 @@ +FROM node:alpine + +ENV DEBUG=* + +WORKDIR /src +COPY . . +RUN npm install + +CMD npm start \ No newline at end of file diff --git a/echo-websocket/index.js b/echo-websocket/index.js new file mode 100644 index 0000000..0dfe158 --- /dev/null +++ b/echo-websocket/index.js @@ -0,0 +1,61 @@ +const ioFogClient = require('@iofog/nodejs-sdk') +const WebSocketServer = require('ws').Server + +let port, wss +ioFogClient.init('iofog', 54321, null, main) + +async function fetchConfig() { + const configRequest = () => new Promise((resolve, reject) => { + ioFogClient.getConfig({ + 'onBadRequest': reject, + 'onError': reject, + 'onNewConfig': resolve + }) + }) + + try { + const config = await configRequest() + newPort = config.port || 8080 + if (newPort !== port) { + if (wss) { + wss.clients.forEach(ws => ws.close()) + } + + port = newPort + wss = new WebSocketServer({ port }) + + console.log(`listening on port: ${port}`) + + wss.on('connection', (ws) => { + console.log('new client connected!') + ws.send('connected!') + ws.on('message', (message) => { + console.log(message) + ws.send('echo: ' + message) + }) + }) + + wss.on('close', () => { + console.log('disconnected'); + }) + } + } catch (e) { + console.error(e) + process.exit(1) + } + +} + +async function main() { + await fetchConfig() + + ioFogClient.wsControlConnection({ + 'onNewConfigSignal': async () => { + await fetchConfig() + }, + 'onError': (error) => { + console.error('There was an error with Control WebSocket connection to ioFog: ', error) + process.exit(1) + } + }) +} diff --git a/echo-websocket/package.json b/echo-websocket/package.json new file mode 100644 index 0000000..6fcb770 --- /dev/null +++ b/echo-websocket/package.json @@ -0,0 +1,15 @@ +{ + "name": "echo-websocket", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@iofog/nodejs-sdk": "1.3.0", + "ws": "7.2.1" + } +} diff --git a/sensors-data/Makefile b/sensors-data/Makefile index 8aeaa4e..332d072 100644 --- a/sensors-data/Makefile +++ b/sensors-data/Makefile @@ -1,2 +1,2 @@ image: - docker build -t baghbidi/public:sensors . \ No newline at end of file + docker build -t iofog/sensors:latest . \ No newline at end of file diff --git a/sensors-data/src/index.ts b/sensors-data/src/index.ts index 17a98e0..64f1f7e 100644 --- a/sensors-data/src/index.ts +++ b/sensors-data/src/index.ts @@ -16,8 +16,7 @@ function read(client): Promise { parser.on('readable', async () => { let data = parser.read() while (data) { - const ms = (data[0] * 1000) - time - await sleep(ms) + await sleep(1000) time = (data[0] * 1000) const json = {