46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
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]);
|
|
// console.log(message);
|
|
if(serverSockets[ws.data.uuid].readyState != 1) {
|
|
serverSockets[ws.data.uuid].addEventListener("open", ()=>{
|
|
serverSockets[ws.data.uuid].send(message);
|
|
})
|
|
} else {
|
|
serverSockets[ws.data.uuid].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];
|
|
});
|
|
serverSockets[ws.data.uuid] = socket;
|
|
},
|
|
close(ws, code, message) {
|
|
serverSockets[ws.data.uuid].close();
|
|
delete serverSockets[ws.data.uuid];
|
|
},
|
|
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"); |