import {Logger} from "./logger"; import { encode } from "@msgpack/msgpack"; import {MessageC2S} from "./protocol/MessageC2S"; const logger = new Logger("Gateway"); export async function gateway_connect(gateway_url: string) { logger.info("FAST CONNECT - Connecting to gateway socket at " + gateway_url); let ws = await _websocket_connect(gateway_url); logger.debug("[fastconnect] connected to gateway, performing handshake with server"); } let socket: WebSocket | undefined = undefined; function _websocket_connect(url: string): Promise { if (socket && socket.readyState < 2) { // reuse socket connection return Promise.resolve(socket); } return new Promise((resolve, reject) => { socket = new WebSocket(url); socket.onopen = () => { // @ts-ignore if here, guaranteed that `socket` != undefined resolve(socket); } socket.onerror = (err) => { reject(err); } }); }