Browse Source

$error event, maybe more robust

master
Martin Dørum 4 years ago
parent
commit
bb04f73451
1 changed files with 20 additions and 51 deletions
  1. 20
    51
      client.js

+ 20
- 51
client.js View File

@@ -1,53 +1,25 @@
(function() {
function post(url, cb) {
var xhr = new XMLHttpRequest();

var cbd = false;

var timeout = setTimeout(function() {
if (cbd) return;
cbd = true;

cb("ETIMEDOUT");
xhr.abort();
}, 5000);

xhr.addEventListener("load", function() {
if (cbd) return;
cbd = true;
clearTimeout(timeout);

try {
var obj = JSON.parse(xhr.responseText);
} catch (err) {
console.log(xhr.responseText);
cb(err);
}

if (obj.error) {
cb(obj.error);
} else {
cb(null, obj);
}
});

xhr.addEventListener("error", function(err) {
if (cbd) return;
cbd = true;
clearTimeout(timeout);

cb(err);
});
xhr.addEventListener("abort", function(err) {
let cbd = false;
function c(err, res) {
if (cbd) return;
cbd = true;
clearTimeout(timeout);

cb(err);
});
cb(err, res);
}

xhr.open("POST", url);
xhr.send();
setTimeout(() => c("ETIMEDOUT"), 5000);

fetch(url, { method: "POST" })
.then(response => response.json())
.then(obj => {
if (obj.error)
c(obj.error);
else
c(null, obj);
})
.catch(err => {
c(err);
});
}

window.WebEvents = function() {
@@ -85,10 +57,6 @@

function await() {
post("/webevents/await/"+key, function(err, res) {
if (err) {
console.log("Await done, with errors");
}

// Retry on error
if (err === "ENOTREGISTERED") {
console.log("Not registered, reregistering");
@@ -99,8 +67,9 @@
setTimeout(await, 0);
return;
} else if (err) {
console.error(err);
setTimeout(await, 2000);
console.error("Error:", err.toString());
emit("$error", err);
setTimeout(init, 2000);
return;
}


Loading…
Cancel
Save