aprsNotifyJS/src/server.js

43 lines
1.3 KiB
JavaScript

const WebSocket = require('ws');
const net = require('net');
const fs = require('fs');
const client = new net.Socket();
const wss = new WebSocket.Server({host: "127.0.0.1", port: 4321});
wss.broadcast = function(data) {
wss.clients.forEach(client => {
if (client.readyState === WebSocket.OPEN) {
client.send(data);
}
});
};
client.connect(
14580, "rotate.aprs2.net",
() => client.write("user KC1GDW pass -1 filter r/43.90/-72.15/75\r\n"));
client.on('data', function(data) {
let str = data.toString('utf8').replace(/^\s+|\s+$/g, "");
console.log(str);
// strip whitespace, then handle multiple APRS packets per TCP packet
str.split("\r\n").forEach(packet => {
if (!packet.startsWith('#')) { // ignore comments
let date = new Date();
let datestamp = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
let data = [datestamp, packet];
console.log(data);
fs.appendFile("log" + datestamp + ".json", JSON.stringify(data) + ",\n",
err => {if (err) throw err;});
wss.broadcast(JSON.stringify(data));
}
});
});
// wss.on('connection', ws => {
// let datestamp = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
// fs.readFileSync("log" + datestamp + ".json")
// .toString().split('\n').forEach(line => ws.send(line));
// });