leds/server.js

47 lines
1.2 KiB
JavaScript

import * as net from 'net';
import * as fs from 'fs';
import { functions } from './lights.js'
import Logger, { levels } from './logger.js';
const cfg = JSON.parse(fs.readFileSync('./config.json'));
const log = new Logger("server", cfg.log_level ? levels[cfg.log_level] : levels.INFO);
const hostname = '0.0.0.0';
const port = 29999;
export function recv(callback, errorCallback) {
let server = new net.Server();
server.listen(port, hostname, () => {
server.on('connection', (con) => {
console.log('connection recieved: ' +
con.remoteAddress + ":" + con.remotePort);
let functions_str = JSON.stringify(Object.keys(functions));
con.write(functions_str);
log.debug(`sending ${functions_str}`);
con.on('data', (data) => {
callback(data);
});
con.on('close', () => {
console.log('recieved close for ' +
con.remoteAddress + ":" + con.remotePort);
con.destroy();
});
server.getConnections((err, cons) => {
if (err) {
console.error(err);
}
else {
console.log(`connections: ${cons}`);
}
})
})
server.on('error', (e) => {
server.close();
errorCallback(e);
});
});
}