diff options
author | MetaMuffin <metamuffin@yandex.com> | 2021-08-06 09:44:50 +0200 |
---|---|---|
committer | MetaMuffin <metamuffin@yandex.com> | 2021-08-06 09:44:50 +0200 |
commit | 57785600bb67dc1163945bd19ff3bbb9f0aab0c2 (patch) | |
tree | 02712d28da139eb0236d00e5727ecd324ab04d09 /source/client/room.ts | |
parent | 9a44e9370cb3398bb4bb08a4a85f1d303a90031f (diff) | |
download | keks-meet-57785600bb67dc1163945bd19ff3bbb9f0aab0c2.tar keks-meet-57785600bb67dc1163945bd19ff3bbb9f0aab0c2.tar.bz2 keks-meet-57785600bb67dc1163945bd19ff3bbb9f0aab0c2.tar.zst |
b
Diffstat (limited to 'source/client/room.ts')
-rw-r--r-- | source/client/room.ts | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/source/client/room.ts b/source/client/room.ts index bea1582..9d315ba 100644 --- a/source/client/room.ts +++ b/source/client/room.ts @@ -1,12 +1,16 @@ import { log } from "./logger"; import { CSPacket, SCPacket } from "./types"; +import { RemoteUser } from "./remote_user"; import { User } from "./user"; +import { LocalUser } from "./local_user"; 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) { @@ -19,6 +23,7 @@ export class Room { this.websocket.onmessage = (ev) => { this.websocket_message(JSON.parse(ev.data)) } + this.local_user = new LocalUser(this, Math.random().toString()) } websocket_send(data: CSPacket) { @@ -28,15 +33,20 @@ export class Room { websocket_message(packet: SCPacket) { if (packet.join) { log("*", `${this.name} ${packet.sender} joined`); - this.users.set(packet.sender, new User(this, packet.sender, !packet.stable)) + 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.users.get(packet.sender) + 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") @@ -50,6 +60,6 @@ export class Room { } websocket_open() { log("ws", "websocket opened"); - this.websocket.send(Math.random().toString()) + this.websocket.send(this.local_user.name) } }
\ No newline at end of file |