ai-adventure-labs/server/frontend/public/js/connect/api.js

46 lines
957 B
JavaScript

import { ServerAuth } from "/js/connect/auth.js";
class ApiMethods {
constructor (api) {
this.api = api;
}
async info () {
const socket = this.api.socket;
const promise = new Promise((rs, rj) => {
socket.onmessage = (ev) => {
const data = JSON.parse(ev.data).result;
rs(data);
};
socket.onerror = (err) => rj(err);
});
socket.send(
JSON.stringify({
method: "info",
}),
);
return await promise;
}
}
export class ApiSocket {
constructor ({
isTLSmode, address, port
}) {
this.tlsMode = isTLSmode;
this.address = address;
this.port = port;
this.socket = new WebSocket(`${!isTLSmode ? "ws" : "wss"}://${address}:${port}`);
this.methods = new ApiMethods(this);
}
async run () {
const socket = this.socket;
const promise = new Promise((rs, rj) => {
socket.onopen = () => this.methods.info().then(data => rs(data));
socket.onerror = (err) => rj(err);
});
return await promise;
}
}