Files
server/client.ts
T
2024-03-19 22:27:58 -04:00

47 lines
1.1 KiB
TypeScript

import { parseArgs } from "util";
async function main({ url, domain }: { url: string; domain?: string }) {
const serverUrl = `ws://${domain || "localhost:1234"}?new`;
const socket = new WebSocket(serverUrl);
socket.addEventListener("message", (event) => {
const data = JSON.parse(event.data);
console.log("message:", data);
if (data.method) {
fetch(`${url}${data.path}`, {
method: data.method,
headers: data.headers,
})
.then((res) => res.text())
.then((res) => {
socket.send(res);
});
}
});
socket.addEventListener("open", (event) => {
console.log("socket ready:", !!(event.target as any).readyState);
socket.ping();
});
}
const { values } = parseArgs({
args: Bun.argv,
options: {
port: {
type: "string",
required: true,
short: "p",
},
domain: {
type: "string",
short: "d",
},
},
allowPositionals: true,
});
if (!values.port) throw "pass --port 3000";
main({ url: `localhost:${values.port}`, domain: values.domain });