summaryrefslogtreecommitdiff
path: root/client-web
diff options
context:
space:
mode:
Diffstat (limited to 'client-web')
-rw-r--r--client-web/source/room.ts6
-rw-r--r--client-web/watch-builder.ts36
2 files changed, 38 insertions, 4 deletions
diff --git a/client-web/source/room.ts b/client-web/source/room.ts
index 3ed7ddf..af85044 100644
--- a/client-web/source/room.ts
+++ b/client-web/source/room.ts
@@ -4,7 +4,6 @@ import { log } from "./logger.ts";
import { RemoteUser } from "./remote_user.ts";
import { User } from "./user.ts";
import { LocalUser } from "./local_user.ts";
-import { hex_id, parameter_string } from "./helper.ts";
import { ServerboundPacket, ClientboundPacket } from "../../common/packets.d.ts";
@@ -20,7 +19,7 @@ export class Room {
this.name = name
this.el = document.createElement("div")
this.el.classList.add("room")
- this.websocket = new WebSocket(`${window.location.protocol.endsWith("s:") ? "wss" : "ws"}://${window.location.host}/signaling/${encodeURIComponent(name)}`)
+ this.websocket = new WebSocket(`${window.location.protocol.endsWith("s:") ? "wss" : "ws"}://${window.location.host}/${encodeURIComponent(name)}/signaling`)
this.websocket.onclose = () => this.websocket_close()
this.websocket.onopen = () => this.websocket_open()
this.websocket.onmessage = (ev) => {
@@ -70,7 +69,6 @@ export class Room {
}
websocket_open() {
log("ws", "websocket opened");
- this.websocket.send(this.local_user.name)
- setInterval(() => this.websocket_send({}), 30000) // stupid workaround for nginx disconnection inactive connections
+ setInterval(() => this.websocket_send({ ping: null }), 30000) // stupid workaround for nginx disconnecting inactive connections
}
} \ No newline at end of file
diff --git a/client-web/watch-builder.ts b/client-web/watch-builder.ts
new file mode 100644
index 0000000..05871e1
--- /dev/null
+++ b/client-web/watch-builder.ts
@@ -0,0 +1,36 @@
+
+// `emit` uses fetch to *download* was, that is just stupid
+// import { bundle } from "https://deno.land/x/emit@0.1.1/mod.ts";
+
+// instead, lets run `deno bundle` manually
+
+async function bundle(entry: string, options: { compilerOptions: { checkJs: boolean } }) {
+ const proc = Deno.run({ cmd: ["deno", "bundle", options.compilerOptions.checkJs ? "--check" : "--no-check", "--unstable", entry], stdout: "piped" })
+ const out = await proc.output()
+ const code = new TextDecoder().decode(out)
+ return { code }
+}
+
+let refresh_needed = false
+let refresh_pending = false
+async function refresh() {
+ refresh_needed = true
+ if (refresh_pending) return
+ refresh_needed = false
+ refresh_pending = true
+
+ try {
+ const { code } = await bundle("source/index.ts", { compilerOptions: { checkJs: false } })
+ await Deno.writeTextFile("public/assets/bundle.js", code)
+ } catch (e) { console.error(e) }
+
+ refresh_pending = false
+ if (refresh_needed) refresh()
+}
+
+refresh()
+for await (const event of Deno.watchFs("source")) {
+ if (event.kind == "modify" || event.kind == "create") {
+ refresh()
+ }
+}