diff options
Diffstat (limited to 'client-web')
| -rw-r--r-- | client-web/source/room.ts | 6 | ||||
| -rw-r--r-- | client-web/watch-builder.ts | 36 | 
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() +    } +}  |