summaryrefslogtreecommitdiffhomepage
path: root/js/src/server/server.ts
blob: 6266e94215b11cf476c470af4a3d0643d9e2f7b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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;
    }
  }
}