Skip to content
This repository has been archived by the owner on Apr 15, 2023. It is now read-only.

Commit

Permalink
🔨 allow for multiple calls to methods
Browse files Browse the repository at this point in the history
  • Loading branch information
timmo001 committed Oct 8, 2018
1 parent eab3f7f commit 03e5b9a
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 16 deletions.
18 changes: 13 additions & 5 deletions websocket/index.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
const WebSocket = require('ws');
const WebSocket = require('ws'),
Run = require('./run');

module.exports = server => {
const wss = new WebSocket.Server({ server });

wss.on('connection', ws => {
let runningFuncs = [];
console.log('New WS Connection');
ws.on('message', incoming = (message) => {
ws.on('message', message => {
message = JSON.parse(message);
runningFuncs.map(rf => rf.name === message.request && rf.runner.stop());
switch (message.request) {
case 'sql': require('./sql')(ws, message, {}); break;
case 'sql':
runningFuncs.push({
name: message.request,
runner: new Run(ws, message, require('./sql'))
});
break;
}
}).on('close', () => {
runningFuncs.map(rf => rf.runner.stop());
});
// ws.on('close', () => { });
});
};
5 changes: 5 additions & 0 deletions websocket/respond.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = (ws, request, res) => {
res.date = new Date();
ws.send(JSON.stringify(res));
console.log(`Response to '${request}' sent.`);
};
16 changes: 16 additions & 0 deletions websocket/run.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const respond = require('./respond');
let interval;

class Run {
constructor(ws, message, func) {
func(message, res => respond(ws, message.request, res));
interval = setInterval(() => {
func(message, res => respond(ws, message.request, res));
}, message.update_ms || 10000);
}
stop() {
clearInterval(interval);
}
}

module.exports = Run;
13 changes: 2 additions & 11 deletions websocket/sql.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,7 @@
const sql = require('../common/sql');

const run = (ws, req) => {
module.exports = (req, cb) => {
sql(req, response => {
response.date = new Date();
ws.send(JSON.stringify(response));
console.log(`Response to '${req.request}' sent.`);
cb(response);
});
};

module.exports = (ws, req) => {
run(ws, req);
setInterval(() => {
run(ws, req);
}, 10000);
};

0 comments on commit 03e5b9a

Please sign in to comment.