Better offline detection (#12513)

This commit is contained in:
Michael Geers 2024-02-27 22:59:18 +01:00 • committed by GitHub
parent 839118ed80
commit ab877571bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 1 deletions

View file

@ -24,7 +24,6 @@ const app = createApp({
watch: {
offline: function (value) {
console.log(`we are ${value ? "offline" : "online"}`);
sendToApp({ type: value ? "offline" : "online" });
},
},
methods: {
@ -51,9 +50,11 @@ const app = createApp({
},
setOnline: function () {
this.offline = false;
sendToApp({ type: "online" });
},
setOffline: function () {
this.offline = true;
sendToApp({ type: "offline" });
},
},
render: function () {

View file

@ -15,6 +15,16 @@ import BatterySettingsModal from "../components/BatterySettingsModal.vue";
import HelpModal from "../components/HelpModal.vue";
import collector from "../mixins/collector";
// assume offline if not data received for 60 seconds
let lastDataReceived = new Date();
const maxDataAge = 60 * 1000;
setInterval(() => {
if (new Date() - lastDataReceived > maxDataAge) {
console.log("no data received, assume we are offline");
window.app.setOffline();
}
}, 1000);
export default {
name: "App",
components: { GlobalSettingsModal, HelpModal, BatterySettingsModal },
@ -120,6 +130,7 @@ export default {
try {
var msg = JSON.parse(evt.data);
store.update(msg);
lastDataReceived = new Date();
} catch (error) {
window.app.raise({
message: `Failed to parse web socket data: ${error.message} [${evt.data}]`,