diff options
Diffstat (limited to 'source/client/room.ts')
-rw-r--r-- | source/client/room.ts | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/source/client/room.ts b/source/client/room.ts index 100f6cf..bea1582 100644 --- a/source/client/room.ts +++ b/source/client/room.ts @@ -1,4 +1,5 @@ -import { CSPacket, SCPacket} from "./types"; +import { log } from "./logger"; +import { CSPacket, SCPacket } from "./types"; import { User } from "./user"; @@ -7,7 +8,6 @@ export class Room { name: string users: Map<string, User> = new Map() websocket: WebSocket - local_user: User constructor(name: string) { this.name = name @@ -19,35 +19,37 @@ export class Room { this.websocket.onmessage = (ev) => { this.websocket_message(JSON.parse(ev.data)) } - // const name = prompt() ?? "nameless user" - const uname = Math.random().toString() - this.local_user = new User(this, uname, true) } websocket_send(data: CSPacket) { + log("ws", `-> ${data.receiver ?? "*"}`, data) this.websocket.send(JSON.stringify(data)) } websocket_message(packet: SCPacket) { - console.log("websocket message", packet); if (packet.join) { - this.users.set(packet.sender, new User(this, packet.sender)) + log("*", `${this.name} ${packet.sender} joined`); + this.users.set(packet.sender, new User(this, packet.sender, !packet.stable)) return } const sender = this.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) 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() { - console.log("websocket closed"); + log("ws", "websocket closed"); } websocket_open() { - console.log("websocket opened"); - this.websocket.send(this.local_user.name) + log("ws", "websocket opened"); + this.websocket.send(Math.random().toString()) } }
\ No newline at end of file |