import createDebug from "debug";
const logger = createDebug("gateway");
export interface GatewayClient {
socket: WebSocket;
}
export async function gateway_connect(url: string) {
logger("connecting to gateway socket at " + url)
let ws = await _websocket_connect(url);
logger("connected to gateway, sending username and auth details");
let client: GatewayClient = {
socket: ws
};
ws.onmessage = (e) => {
console.log(e.data);
}
return client;
}
let socket: WebSocket | undefined = undefined;
function _websocket_connect(url: string): Promise<WebSocket> {
if (socket && socket.readyState < 2) {
// reuse socket connection
return Promise.resolve(socket);
}
return new Promise((resolve, reject) => {
socket = new WebSocket(url);
socket.onopen = () => {
resolve(socket!);
};
socket.onerror = (err) => {
reject(err);
};
});
}