diff options
Diffstat (limited to 'js/src/server')
| -rw-r--r-- | js/src/server/server.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/js/src/server/server.ts b/js/src/server/server.ts new file mode 100644 index 000000000..6266e9421 --- /dev/null +++ b/js/src/server/server.ts @@ -0,0 +1,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; + } + } +} |
