let serverSockets = {}; const server = Bun.serve({ port: 3000, routes: { "/admin": Response("admin panel wip"), "/api/*": Response.json({"success": false, "reason": "API has not been implemented."}) }, websocket: { message(ws, message) { // console.log(serverSockets[ws.data.uuid]["remote"]); // console.log(message); if(serverSockets[ws.data.uuid]["remote"].readyState != 1) { serverSockets[ws.data.uuid]["remote"].addEventListener("open", ()=>{ serverSockets[ws.data.uuid]["remote"].send(message); }) } else { serverSockets[ws.data.uuid]["remote"].send(message); } }, open(ws) { // console.log(ws); let socket = new WebSocket(`wss://${ws.data.url}`); socket.addEventListener("message", event => { ws.send(event.data); }); socket.addEventListener("close", event => { ws.close(); delete serverSockets[ws.data.uuid]["remote"]; }); serverSockets[ws.data.uuid]["remote"] = socket; serverSockets[ws.data.uuid]["local"] = ws; }, close(ws, code, message) { serverSockets[ws.data.uuid]["remote"].close(); delete serverSockets[ws.data.uuid]["remote"]; }, drain(ws) {}, }, fetch(req) { if (server.upgrade(req, { data: { url: new URL(req.url).pathname.substring(1), uuid: crypto.randomUUID() } })) { return; } return Response("server up"); } }) console.log("server up");