Fetch all unread messages on reconnect

This commit is contained in:
Simon Ser 2020-07-15 18:21:09 +02:00
parent 3b0253855e
commit 36df984b09
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
2 changed files with 178 additions and 30 deletions

View file

@ -276,4 +276,26 @@ export default class Client extends EventTarget {
this.ws.close(1000);
this.registered = false;
}
/* Execute a command that expects a response. `done` is called with message
* events until it returns a truthy value. */
roundtrip(msg, done) {
return new Promise((resolve, reject) => {
var handleMessage = (event) => {
try {
var result = done(event);
if (result) {
this.removeEventListener("message", handleMessage);
resolve(result);
}
} catch (err) {
this.removeEventListener("message", handleMessage);
reject(err);
}
};
this.addEventListener("message", handleMessage);
this.send(msg);
});
}
}