diff --git a/datahandler.js b/datahandler.js index 9630738..88ca203 100644 --- a/datahandler.js +++ b/datahandler.js @@ -1,7 +1,5 @@ const koffi = require('koffi'); const path = require('path'); -//const lib = koffi.load(path.join(__dirname, "librds.so")); -//const lib = koffi.load(path.join(__dirname, "librds.dll")); const os = require('os'); const win32 = (os.platform() == "win32"); const unicode_type = (win32 ? 'int16_t' : 'int32_t'); @@ -56,8 +54,8 @@ const decode_unicode = function(string) const callbacks = { pi: koffi.register(rds => ( - value = rdsparser.get_pi(rds), - console.log('PI: ' + value.toString(16).toUpperCase()) + value = rdsparser.get_pi(rds) + //console.log('PI: ' + value.toString(16).toUpperCase()) ), 'callback_pi *'), pty: koffi.register(rds => ( @@ -71,13 +69,13 @@ const callbacks = { ), 'callback_tp *'), ta: koffi.register(rds => ( - value = rdsparser.get_ta(rds), - console.log('TA: ' + value) + value = rdsparser.get_ta(rds) + //console.log('TA: ' + value) ), 'callback_ta *'), ms: koffi.register(rds => ( - value = rdsparser.get_ms(rds), - console.log('MS: ' + value) + value = rdsparser.get_ms(rds) + //console.log('MS: ' + value) ), 'callback_ms *'), af: koffi.register((rds, value) => ( @@ -85,8 +83,8 @@ const callbacks = { ), 'callback_af *'), ecc: koffi.register(rds => ( - value = rdsparser.get_ecc(rds), - console.log('ECC: ' + value.toString(16).toUpperCase()) + value = rdsparser.get_ecc(rds) + //console.log('ECC: ' + value.toString(16).toUpperCase()) ), 'callback_ecc *'), ps: koffi.register(rds => ( @@ -131,8 +129,8 @@ const clientUpdateIntervals = new Map(); // Store update intervals for each clie // Initialize the data object var dataToSend = { pi: '?', - freq: 0, - signal: '', + freq: 87.500.toFixed(3), + signal: 0, st: false, rds: '', ps: '', @@ -145,8 +143,8 @@ var dataToSend = { const initialData = { pi: '?', - freq: 0, - signal: '', + freq: 87.500.toFixed(3), + signal: 0, st: false, rds: '', ps: '', @@ -246,15 +244,6 @@ function handleData(ws, receivedData) { } } -/*setInterval(function () { - // some code - if (rdsBuffer.length > 50) { - handleBuffer(); - //console.log("handling buffer"); - } - //console.log(rdsBuffer.length); -}, 150);*/ - module.exports = { handleData }; \ No newline at end of file diff --git a/index.js b/index.js index 0d87132..e8ecf43 100644 --- a/index.js +++ b/index.js @@ -10,6 +10,11 @@ const crypto = require('crypto'); let receivedSalt = ''; let receivedPassword = false; +let currentUsers = 0; + +const infoMsg = "\x1b[32m[INFO]\x1b[0m"; +const debugMsg = "\x1b[36m[DEBUG]\x1b[0m"; + // Other JS files const dataHandler = require('./datahandler'); const config = require('./userconfig'); @@ -17,7 +22,6 @@ const config = require('./userconfig'); /* Server settings */ const webServerHost = config.webServerHost; // IP of the web server const webServerPort = config.webServerPort; // web server port - const xdrdServerHost = config.xdrdServerHost; // xdrd server iP const xdrdServerPort = config.xdrdServerPort; // xdrd server port const xdrdPassword = config.xdrdPassword; @@ -30,16 +34,27 @@ const httpServer = http.createServer(app); const client = new net.Socket(); /* webSocket handlers */ -wss.on('connection', (ws) => { - console.log('WebSocket client connected'); +wss.on('connection', (ws, request) => { + const clientIp = request.connection.remoteAddress; + currentUsers++; + console.log(infoMsg, `WebSocket client connected\nIP: ${clientIp}\nUsers online: ${currentUsers}`); ws.on('message', (message) => { - console.log('Received message from client:', message.toString()); + if(config.verboseMode === true) { + console.log(debugMsg,'Received message from client:', message.toString()); + } newFreq = message.toString() * 1000; client.write("T" + newFreq + '\n'); }); -}); + ws.on('close', (code, reason) => { + currentUsers--; + console.log(infoMsg, `WebSocket client disconnected\nIP: ${clientIp}\nCode: ${code} ${reason}\nUsers online: ${currentUsers}`); + }); + + ws.on('error', console.error); + +}); // Serve static files from the "web" folder app.use(express.static(path.join(__dirname, 'web'))); @@ -64,7 +79,7 @@ function authenticateWithXdrd(client, salt, password) { // WebSocket client connection client.connect(xdrdServerPort, xdrdServerHost, () => { - console.log('Connected to xdrd'); + console.log(infoMsg, 'Connected to xdrd successfully.'); client.once('data', (data) => { const receivedData = data.toString(); @@ -82,18 +97,6 @@ client.connect(xdrdServerPort, xdrdServerHost, () => { client.on('data', (data) => { const receivedData = data.toString(); - const lines = receivedData.split('\n'); - - // If there's at least one line, set it as the received salt - /*if (lines.length > 0 && receivedPassword === false) { - receivedSalt = lines[0].trim(); // Trim any leading or trailing whitespace - console.log('Received Salt:', receivedSalt); - - // Authentication logic - authenticateWithXdrd(client, receivedSalt, xdrdPassword); - receivedPassword = true; - }*/ - wss.clients.forEach((client) => { if (client.readyState === WebSocket.OPEN) { dataHandler.handleData(client, receivedData); @@ -115,7 +118,7 @@ httpServer.on('upgrade', (request, socket, head) => { }); httpServer.listen(webServerPort, webServerHost, () => { - console.log(`Web server is running at http://${webServerHost}:${webServerPort}`); + console.log(infoMsg, `Web server is running at \x1b[34mhttp://${webServerHost}:${webServerPort}\x1b[0m.`); }); /* Audio */ diff --git a/userconfig.js b/userconfig.js index eeb99d5..75a1ba9 100644 --- a/userconfig.js +++ b/userconfig.js @@ -5,6 +5,8 @@ const xdrdServerHost = '192.168.1.15'; // xdrd server iP const xdrdServerPort = 7373; // xdrd server port const xdrdPassword = ''; // xdrd password (optional) +const verboseMode = false; // if true, console will display extra messages + module.exports = { - webServerHost, webServerPort, xdrdServerHost, xdrdServerPort, xdrdPassword + webServerHost, webServerPort, xdrdServerHost, xdrdServerPort, xdrdPassword, verboseMode }; \ No newline at end of file diff --git a/web/index.html b/web/index.html index f2fe47f..3fe14e2 100644 --- a/web/index.html +++ b/web/index.html @@ -8,76 +8,89 @@
- - -
-
- -
- -
-

- - TP - -

-
-
- - -
-
-

PI CODE

- -
- -
-

FREQUENCY

- -
- -
-

SIGNAL

- - - dBf - -
-
+
-
- - +
+
+
+ +
+ +
+

+ + TP + +

+
+
+ + +
+
+

PI CODE

+ +
+ +
+

FREQUENCY

+ +
+ +
+

SIGNAL

+ + + dBf + +
+
+ +
+
+ + +
+ +
+ + + + +
+ +
+ +
+
+ +
+

RADIOTEXT

+
+
+ +
+
- -
- - + +
+
+

AF

+
+
    + +
+
+
- -
- -
-
- -
-

RADIOTEXT

-
-
- -
- -
-

AF

-
@@ -87,7 +100,7 @@