| 12345678910111213141516171819202122232425262728293031323334 |
- import { Log } from "../util/log";
- export namespace RPC {
- const log = Log.create({ service: "rpc" });
- const PORT = 16713;
- export function listen(input?: { port?: number }) {
- const port = input?.port ?? PORT;
- log.info("trying", { port });
- try {
- const server = Bun.serve({
- port,
- websocket: {
- open() {},
- message() {},
- },
- routes: {
- "/ws": (req, server) => {
- if (server.upgrade(req)) return;
- return new Response("Not a websocket request", { status: 400 });
- },
- },
- });
- log.info("listening", { port });
- return {
- server,
- };
- } catch (e: any) {
- if (e?.code === "EADDRINUSE") {
- return listen({ port: port + 1 });
- }
- throw e;
- }
- }
- }
|