Skip to content

Commit

Permalink
Improve WS error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
mskvortsov committed Apr 11, 2024
1 parent 5ff101e commit e09edf7
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 9 deletions.
5 changes: 3 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,13 @@
<table class="bottom-table">
<tr>
<td class="left">
<label for="mqtt-url">MQTT URL</label>
<input id="mqtt-url" type="text" size="25"/>
<label for="mqtt-url">Broker URL</label>
<input id="mqtt-url" type="text" size="30"/>
<label for="mqtt-topic">Topic</label>
<input id="mqtt-topic" type="text" size="10"/>
<button id="mqtt-connect">Connect</button>
<button id="clear">Clear</button>
<span id="mqtt-status"></span>
</td>
<td class="right">
<a href="https://github.com/mskvortsov/meshmon" target="_blank">
Expand Down
5 changes: 4 additions & 1 deletion meshmon.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ body {
color-scheme: dark;
background-color: #232327;
color: #b1b1b3;
font-family: sans-serif;
font-family: Verdana, sans-serif;
}

.main-table td {
Expand Down Expand Up @@ -88,6 +88,9 @@ body {
padding: 0;
width: 100%;
}
.bottom-table label, button, input, span {
font-family: Verdana, sans-serif;
}
.bottom-table td {
padding: 0;
border: 0;
Expand Down
35 changes: 29 additions & 6 deletions meshmon.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ var packets = [];

var mqttUrlInput = null;
var mqttTopicInput = null;
var mqttConnected = false;
var mqttClient = null;
var mqttStatusHint = null;

var tbody = null;
var statusRow = null;
Expand Down Expand Up @@ -187,16 +187,15 @@ function decodeEncrypted(packet, key) {
}

function mqttOnConnect() {
mqttConnected = true;
connectButton.textContent = 'Disconnect';
connectButton.disabled = false;
statusRow.className = 'status-connected';
mqttStatusHint.innerHTML = '';
mqttClient.subscribe(`${mqttTopicInput.value}/2/c/+/+`);
mqttClient.subscribe(`${mqttTopicInput.value}/2/e/+/+`);
}

function mqttOnDisconnect() {
mqttConnected = false;
function resetToConnect() {
mqttClient = null;
connectButton.textContent = 'Connect';
connectButton.disabled = false;
Expand All @@ -205,17 +204,39 @@ function mqttOnDisconnect() {
statusRow.className = 'status-disconnected';
}

function mqttOnDisconnect() {
resetToConnect();
}

function mqttOnError(error) {
mqttStatusHint.innerHTML = error.toString();
resetToConnect();
}

function onClickConnect() {
connectButton.disabled = true;
if (mqttConnected) {
if (mqttClient && mqttClient.connected) {
mqttClient.on('close', mqttOnDisconnect);
mqttClient.end();
} else {
mqttUrlInput.disabled = true;
mqttTopicInput.disabled = true;
mqttClient = mqtt.connect(mqttUrlInput.value);
try {
mqttClient = mqtt.connect(mqttUrlInput.value, {
reconnectPeriod: 0,
connectTimeout: 5000,
manualConnect: true,
});
} catch (error) {
mqttStatusHint.innerHTML = error.toString();
resetToConnect();
return;
}
mqttClient.on('connect', mqttOnConnect);
mqttClient.on('message', mqttOnMessage);
mqttClient.on('error', mqttOnError);
mqttClient.connect();
mqttClient.stream.on('error', mqttOnError);
}
}

Expand Down Expand Up @@ -406,6 +427,8 @@ window.onload = function() {
mqttTopicInput.placeholder = defaultMqttTopic;
mqttTopicInput.defaultValue = defaultMqttTopic;

mqttStatusHint = document.getElementById('mqtt-status');

connectButton = document.getElementById('mqtt-connect');
connectButton.addEventListener('click', onClickConnect);

Expand Down

0 comments on commit e09edf7

Please sign in to comment.