From ee8ae5a3f8f8ee5b24f045bac51c005ffcf7dcd6 Mon Sep 17 00:00:00 2001 From: CoolElectronics Date: Tue, 15 Aug 2023 21:07:49 -0400 Subject: [PATCH] split server into dev and cli --- frontend/src/App.svelte | 2 +- server/package.json | 4 +-- server/src/cli.ts | 30 ---------------- server/src/dev.ts | 62 ++++++++++++++++++++++++++++++++ server/src/main.ts | 80 ++++++++++++++++------------------------- 5 files changed, 96 insertions(+), 82 deletions(-) delete mode 100644 server/src/cli.ts diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index 0c114d8..f0161d7 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -105,7 +105,7 @@ const { answer, candidates } = data; connectionState = "Linking to node..."; await new Promise((r) => { - setTimeout(r, 500); + setTimeout(r, 1000); }); rtctransport?.answer(answer, candidates); } diff --git a/server/package.json b/server/package.json index b2e1999..31c3aa3 100644 --- a/server/package.json +++ b/server/package.json @@ -4,8 +4,8 @@ "description": "", "main": "src/main.ts", "scripts": { - "dev": "nodemon src/main.ts", - "start": "ts-node src/main.ts" + "start": "ts-node src/main.ts", + "dev": "nodemon src/dev.ts" }, "keywords": [], "author": "", diff --git a/server/src/cli.ts b/server/src/cli.ts deleted file mode 100644 index 6376c9f..0000000 --- a/server/src/cli.ts +++ /dev/null @@ -1,30 +0,0 @@ - -import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; - - -import { getDatabase, onValue, ref, set } from "firebase/database"; -import { answerRtc } from "./rtc"; - -async function connectFirebase() { - let creds = await signInWithEmailAndPassword(getAuth(), "test@test.com", "123456"); - - const db = getDatabase(); - let peer = ref(db, `/peers/${creds.user.uid}`); - - set(peer, ""); - - onValue(peer, (snapshot) => { - const str = snapshot.val(); - - if (str) { - let data = JSON.parse(str); - if (data && data.offer && data.localCandidates) { - answerRtc(data, (answer) => { - console.log("answering"); - set(peer, JSON.stringify(answer)); - }); - } - } - }); -} -connectFirebase(); \ No newline at end of file diff --git a/server/src/dev.ts b/server/src/dev.ts index e69de29..7afc33c 100644 --- a/server/src/dev.ts +++ b/server/src/dev.ts @@ -0,0 +1,62 @@ +import dotenv from "dotenv"; +import express from "express"; +import expressWs from "express-ws"; + +import { AdriftServer, connectTracker } from "./server"; + +import WebSocket from "isomorphic-ws"; +import { answerRtc, bufferToArrayBuffer, connect } from "./rtc"; + +dotenv.config(); + + +const app = express() as unknown as expressWs.Application; +expressWs(app); + +app.use(express.json()); +app.use((_req, res, next) => { + res.header("x-robots-tag", "noindex"); + res.header("access-control-allow-headers", "*"); + res.header("access-control-allow-origin", "*"); + res.header("access-control-allow-methods", "*"); + res.header("access-control-expose-headers", "*"); + next(); +}); + + + + +app.post("/connect", (req, res) => { + const data = req.body; + answerRtc(data, (d) => { + res.json(d); + }); +}); + +app.ws("/dev-ws", (ws, _req) => { + console.log("ws connect"); + const client = new AdriftServer((msg) => ws.send(msg)); + + ws.on("message", (msg) => { + if (typeof msg === "string") { + msg = Buffer.from(msg); + } + + if (msg instanceof Buffer) { + client.onMsg(bufferToArrayBuffer(msg)); + return; + } + throw new Error("Unexpected message type"); + }); +}); + +try { + + let tracker = new WebSocket("ws://localhost:17776/join"); + tracker.onerror = console.error; + connectTracker(tracker); +} catch (_) { + +} + +app.listen(3000, () => console.log("listening")); diff --git a/server/src/main.ts b/server/src/main.ts index 41137a8..b5ec0ed 100644 --- a/server/src/main.ts +++ b/server/src/main.ts @@ -1,61 +1,43 @@ -import dotenv from "dotenv"; -import express from "express"; -import expressWs from "express-ws"; -import { AdriftServer, connectTracker } from "./server"; - -import WebSocket from "isomorphic-ws"; -import { answerRtc, bufferToArrayBuffer, connect } from "./rtc"; - -dotenv.config(); +import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; +import { initializeApp } from "firebase/app"; -const app = express() as unknown as expressWs.Application; -expressWs(app); +import { getDatabase, onValue, ref, set } from "firebase/database"; +import { answerRtc } from "./rtc"; -app.use(express.json()); -app.use((_req, res, next) => { - res.header("x-robots-tag", "noindex"); - res.header("access-control-allow-headers", "*"); - res.header("access-control-allow-origin", "*"); - res.header("access-control-allow-methods", "*"); - res.header("access-control-expose-headers", "*"); - next(); -}); +import { WebSocket } from "isomorphic-ws"; +import TrackerList from "tracker-list"; +import { connectTracker } from "./server"; +async function connectFirebase() { + let creds = await signInWithEmailAndPassword(getAuth(), "test@test.com", "123456"); + const db = getDatabase(); + let peer = ref(db, `/peers/${creds.user.uid}`); -app.post("/connect", (req, res) => { - const data = req.body; - answerRtc(data, (d) => { - res.json(d); - }); -}); + set(peer, ""); -app.ws("/dev-ws", (ws, _req) => { - console.log("ws connect"); - const client = new AdriftServer((msg) => ws.send(msg)); - - ws.on("message", (msg) => { - if (typeof msg === "string") { - msg = Buffer.from(msg); - } - - if (msg instanceof Buffer) { - client.onMsg(bufferToArrayBuffer(msg)); - return; - } - throw new Error("Unexpected message type"); - }); -}); - -try { - - let tracker = new WebSocket("ws://localhost:17776/join"); - connectTracker(tracker); -} catch (_) { + onValue(peer, (snapshot) => { + const str = snapshot.val(); + if (str) { + let data = JSON.parse(str); + if (data && data.offer && data.localCandidates) { + answerRtc(data, (answer) => { + console.log("answering"); + set(peer, JSON.stringify(answer)); + }); + } + } + }); } -app.listen(3000, () => console.log("listening")); +let tracker = TrackerList["us-central-1"]; +initializeApp(tracker.firebase); + +let trackerws = new WebSocket(tracker.tracker + "/join"); +connectTracker(trackerws); +connectFirebase(); +console.log("main server, use dev server for dev server things"); \ No newline at end of file