Skip to content

Commit a37fef3

Browse files
authored
Merge pull request projecthorus#60 from darksidelemm/main
Move listener updates to websockets.
2 parents 58a0fbb + d69f239 commit a37fef3

File tree

1 file changed

+61
-21
lines changed

1 file changed

+61
-21
lines changed

js/tracker.js

Lines changed: 61 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3290,9 +3290,13 @@ function refreshSingleNew(serial) {
32903290
}
32913291

32923292
ajax_inprogress_single_new = true;
3293-
3294-
var data_str = "duration=3d&payload_callsign=" + serial;
3295-
3293+
3294+
// Only request backlog data from the current time period.
3295+
var mode = wvar.mode.toLowerCase();
3296+
mode = (mode == "position") ? "latest" : mode.replace(/ /g,"");
3297+
var data_str = "duration=" + mode + "&payload_callsign=" + serial;
3298+
3299+
32963300
ajax_positions_single_new = $.ajax({
32973301
type: "GET",
32983302
url: newdata_url,
@@ -3328,6 +3332,12 @@ function liveData() {
33283332
client.subscribe("amateur/#");
33293333
clientTopic = "amateur/#";
33303334
}
3335+
3336+
// Also subscribe to amateur-listener data, for listener and chase-car telemetry.
3337+
// To revert listener-via-websockets change, comment out this line,
3338+
// and un-comment the 'Disable periodical listener refresh' lines further below.
3339+
client.subscribe("amateur-listener/#");
3340+
33313341
clientConnected = true;
33323342
$("#stText").text("websocket |");
33333343
};
@@ -3368,24 +3378,51 @@ function liveData() {
33683378
var dateNow = new Date().getTime();
33693379
try {
33703380
if (clientActive) {
3371-
var frame = [{"1":JSON.parse(message.payloadString.toString())}];
3372-
if (frame.length == null) {
3373-
var tempDate = new Date(frame.time_received).getTime();
3374-
} else {
3375-
var tempDate = new Date(frame[frame.length - 1]["1"].time_received).getTime()
3376-
}
3377-
if ((dateNow - tempDate) < 30000) {
3378-
var test = formatData(frame);
3379-
if (clientActive) {
3380-
live_data_buffer.positions.position.push.apply(live_data_buffer.positions.position,test.positions.position);
3381+
if(message.topic.startsWith("amateur-listener")){
3382+
// Message is Listener / Chase-Car information
3383+
var frame = JSON.parse(message.payloadString.toString());
3384+
// We need to convert this into the right format for feeding into the receiver / chase car update functions.
3385+
// Probably a cleaner way of doing this.
3386+
// Format needs to be {callsign : {timestamp: frame}}
3387+
var formatted_frame = {};
3388+
formatted_frame[frame.uploader_callsign] = {};
3389+
formatted_frame[frame.uploader_callsign][frame.ts] = frame;
3390+
3391+
// Send frames with mobile present and true onto the chase-car updater,
3392+
// otherwise, send them to the receiver updater.
3393+
// Do this on a per-update bases, since listener / chase car updates shouldn't
3394+
// be as frequent.
3395+
if(frame.hasOwnProperty('mobile')) {
3396+
if(frame.mobile == true) {
3397+
updateChase(formatted_frame);
3398+
} else {
3399+
updateReceivers(formatted_frame);
3400+
}
3401+
} else {
3402+
updateReceivers(formatted_frame);
33813403
}
3382-
$("#stTimer").attr("data-timestamp", dateNow);
3383-
$("#stText").text("websocket |");
3384-
} else if ((dateNow - new Date(frame[0]["1"].time_received).getTime()) > 150000) {
3385-
$("#stText").text("error |");
3386-
refresh();
3404+
33873405
} else {
3388-
$("#stText").text("error |");
3406+
// Message is payload telemetry
3407+
var frame = [{"1":JSON.parse(message.payloadString.toString())}];
3408+
if (frame.length == null) {
3409+
var tempDate = new Date(frame.time_received).getTime();
3410+
} else {
3411+
var tempDate = new Date(frame[frame.length - 1]["1"].time_received).getTime()
3412+
}
3413+
if ((dateNow - tempDate) < 30000) {
3414+
var test = formatData(frame);
3415+
if (clientActive) {
3416+
live_data_buffer.positions.position.push.apply(live_data_buffer.positions.position,test.positions.position);
3417+
}
3418+
$("#stTimer").attr("data-timestamp", dateNow);
3419+
$("#stText").text("websocket |");
3420+
} else if ((dateNow - new Date(frame[0]["1"].time_received).getTime()) > 150000) {
3421+
$("#stText").text("error |");
3422+
refresh();
3423+
} else {
3424+
$("#stText").text("error |");
3425+
}
33893426
}
33903427
}
33913428
}
@@ -3436,7 +3473,8 @@ function refreshReceivers() {
34363473
updateReceivers(response);
34373474
},
34383475
complete: function(request, textStatus) {
3439-
periodical_receivers = setTimeout(function() {refreshReceivers(false)}, 60 * 10 * 1000);
3476+
// Disable periodical listener refresh - this data now comes via websockets.
3477+
//periodical_receivers = setTimeout(function() {refreshReceivers(false)}, 60 * 10 * 1000);
34403478
if (!offline.get("opt_hide_chase")) {
34413479
refreshNewReceivers(true);
34423480
}
@@ -3470,7 +3508,8 @@ function refreshNewReceivers(initial, serial) {
34703508
},
34713509
complete: function(request, textStatus) {
34723510
if (typeof serial === 'undefined') {
3473-
periodical_listeners = setTimeout(function() {refreshNewReceivers(false)}, 60 * 1000);
3511+
// Disable periodical listener refresh - this data now comes via websockets.
3512+
//periodical_listeners = setTimeout(function() {refreshNewReceivers(false)}, 60 * 1000);
34743513
}
34753514
}
34763515
});
@@ -3497,6 +3536,7 @@ function refreshPredictions() {
34973536
},
34983537
complete: function(request, textStatus) {
34993538
clearTimeout(periodical_predictions);
3539+
// TODO - Switch this to websockets as well.
35003540
periodical_predictions = setTimeout(refreshPredictions, 60 * 1000);
35013541
}
35023542
});

0 commit comments

Comments
 (0)