diff options
author | metamuffin <metamuffin@disroot.org> | 2022-09-07 11:14:42 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-09-07 11:14:42 +0200 |
commit | 61950198e3bf06555f48e8f51c882a4c3cce5128 (patch) | |
tree | a7701a44804d4a2a634f3410d400545ea82d1c45 /source/client/room.ts | |
parent | 832f48f29098cc6f840ade90db3b94efa67c6833 (diff) | |
download | keks-meet-61950198e3bf06555f48e8f51c882a4c3cce5128.tar keks-meet-61950198e3bf06555f48e8f51c882a4c3cce5128.tar.bz2 keks-meet-61950198e3bf06555f48e8f51c882a4c3cce5128.tar.zst |
REFACTOR! pt.1
Diffstat (limited to 'source/client/room.ts')
-rw-r--r-- | source/client/room.ts | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/source/client/room.ts b/source/client/room.ts deleted file mode 100644 index 145fb1b..0000000 --- a/source/client/room.ts +++ /dev/null @@ -1,72 +0,0 @@ -/// <reference lib="dom" /> - -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 { PacketS, PacketC } from "../packets.ts"; - - -export class Room { - el: HTMLElement - name: string - users: Map<string, User> = new Map() - remote_users: Map<string, RemoteUser> = new Map() - local_user: LocalUser - websocket: WebSocket - - constructor(name: string) { - 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.onclose = () => this.websocket_close() - this.websocket.onopen = () => this.websocket_open() - this.websocket.onmessage = (ev) => { - this.websocket_message(JSON.parse(ev.data)) - } - this.local_user = new LocalUser(this, parameter_string("username", `guest-${hex_id()}`)) - } - - websocket_send(data: PacketS) { - log("ws", `-> ${data.receiver ?? "*"}`, data) - this.websocket.send(JSON.stringify(data)) - } - websocket_message(packet: PacketC) { - if (packet.join) { - log("*", `${this.name} ${packet.sender} joined`); - const ru = new RemoteUser(this, packet.sender) - this.local_user.add_initial_to_remote(ru) - if (!packet.stable) ru.offer() - this.users.set(packet.sender, ru) - this.remote_users.set(packet.sender, ru) - return - } - const sender = this.remote_users.get(packet.sender) - if (!sender) return console.warn(`unknown sender ${packet.sender}`) - if (packet.leave) { - log("*", `${this.name} ${packet.sender} left`); - sender.leave() - this.users.delete(packet.sender) - this.remote_users.delete(packet.sender) - return - } - if (!packet.data) return console.warn("dataless packet") - log("ws", `<- ${packet.sender}: `, packet.data); - if (packet.data.ice_candiate) sender.add_ice_candidate(packet.data.ice_candiate) - if (packet.data.offer) sender.on_offer(packet.data.offer) - if (packet.data.answer) sender.on_answer(packet.data.answer) - } - websocket_close() { - log("ws", "websocket closed"); - setTimeout(() => { - window.location.reload() - }, 1000) - } - 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 - } -}
\ No newline at end of file |