aprsNotifyJS/server.js

36 lines
967 B
JavaScript
Raw Normal View History

const WebSocket = require('ws');
let net = require('net');
let aprs = require("aprs-parser");
const parser = new aprs.APRSParser();
const client = new net.Socket();
const wss = new WebSocket.Server({port: 1234});
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.52/-72.11/50\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 message = parser.parse(packet);
let date = new Date();
message.recieved = date;
console.log(message);
wss.broadcast(JSON.stringify(message));
}
});
});