summaryrefslogtreecommitdiff
path: root/source/client/room.ts
diff options
context:
space:
mode:
authorMetaMuffin <metamuffin@yandex.com>2021-08-06 09:44:50 +0200
committerMetaMuffin <metamuffin@yandex.com>2021-08-06 09:44:50 +0200
commit57785600bb67dc1163945bd19ff3bbb9f0aab0c2 (patch)
tree02712d28da139eb0236d00e5727ecd324ab04d09 /source/client/room.ts
parent9a44e9370cb3398bb4bb08a4a85f1d303a90031f (diff)
downloadkeks-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.ts16
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