aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/client/helper.ts3
-rw-r--r--source/client/local_user.ts1
-rw-r--r--source/client/logger.ts38
-rw-r--r--source/client/remote_user.ts14
-rw-r--r--source/client/rnnoise.ts6
-rw-r--r--source/client/user.ts7
-rw-r--r--source/server/room.ts2
7 files changed, 46 insertions, 25 deletions
diff --git a/source/client/helper.ts b/source/client/helper.ts
index 9725091..37da7b9 100644
--- a/source/client/helper.ts
+++ b/source/client/helper.ts
@@ -4,7 +4,7 @@ import { parameters } from "./index.ts"
export function get_query_params(): { [key: string]: string } {
const q: { [key: string]: string } = {}
- for (const kv of window.location.search.substr(1).split("&")) {
+ for (const kv of window.location.search.substring(1).split("&")) {
const [key, value] = kv.split("=")
q[decodeURIComponent(key)] = decodeURIComponent(value)
}
@@ -16,7 +16,6 @@ export function hex_id(len = 8): string {
return Math.floor(Math.random() * 16 ** len).toString(16).padStart(len, "0")
}
-
export function parameter_bool(name: string, def: boolean): boolean {
const v = parameters[name]
if (!v) return def
diff --git a/source/client/local_user.ts b/source/client/local_user.ts
index 05b5578..ca91a19 100644
--- a/source/client/local_user.ts
+++ b/source/client/local_user.ts
@@ -19,6 +19,7 @@ export class LocalUser extends User {
this.local = true
this.create_controls()
this.add_initial_tracks()
+ log("usermodel", `added local user: ${this.name}`)
}
async add_initial_tracks() {
diff --git a/source/client/logger.ts b/source/client/logger.ts
index f4f4727..1f7139c 100644
--- a/source/client/logger.ts
+++ b/source/client/logger.ts
@@ -1,13 +1,16 @@
/// <reference lib="dom" />
-export type LogTag = "webrtc" | "ws" | "media" | "*" | "misc"
-const log_tag_color: { [key in LogTag]: string } = {
- "*": "#FF0000",
- webrtc: "#FF00FF",
- media: "#FFFF00",
- ws: "#00FFFF",
- misc: "#2222FF",
+const log_tag_color = {
+ "*": "#FF4444",
+ webrtc: "#FF44FF",
+ media: "#FFFF44",
+ ws: "#44FFFF",
+ rnnoise: "#2222FF",
+ usermodel: "#44FF44",
}
+export type LogTag = keyof typeof log_tag_color
+
+let logger_container: HTMLDivElement
// TODO maybe log time aswell
// deno-lint-ignore no-explicit-any
@@ -17,4 +20,25 @@ export function log(tag: LogTag, message: string, ...data: any[]) {
if (e instanceof MediaStreamTrack) data[i] = `(${e.kind}) ${e.id}`
}
console.log(`%c[${tag}] ${message}`, "color:" + log_tag_color[tag], ...data);
+
+ if (logger_container) {
+ const e = document.createElement("p")
+ e.classList.add("logger-line")
+ e.textContent = `[${tag}] ${message}`
+ e.style.color = log_tag_color[tag]
+ logger_container.append(e)
+ setTimeout(() => {
+ e.remove()
+ }, 6000)
+ }
}
+
+globalThis.addEventListener("load", () => {
+ const d = document.createElement("div")
+ d.classList.add("logger-container")
+ document.body.append(d)
+ logger_container = d
+
+ // clear the console every hour so logs dont accumulate
+ setInterval(() => console.clear(), 1000 * 60 * 60)
+})
diff --git a/source/client/remote_user.ts b/source/client/remote_user.ts
index bd2df1c..a0fdeaf 100644
--- a/source/client/remote_user.ts
+++ b/source/client/remote_user.ts
@@ -12,6 +12,7 @@ export class RemoteUser extends User {
constructor(room: Room, name: string) {
super(room, name)
+ log("usermodel", `added remote user: ${name}`)
this.peer = new RTCPeerConnection(servers)
this.peer.onicecandidate = ev => {
if (!ev.candidate) return
@@ -19,11 +20,11 @@ export class RemoteUser extends User {
}
this.peer.ontrack = ev => {
const t = ev.track
- log("media", "remote track", t)
+ log("media", `remote track: ${this.name}`, t)
this.add_track(new TrackHandle(t))
}
this.peer.onnegotiationneeded = async () => {
- log("webrtc", "negotiation needed")
+ log("webrtc", `negotiation needed: ${this.name}`)
while (this.negotiation_busy) {
await new Promise<void>(r => setTimeout(() => r(), 100))
}
@@ -36,12 +37,12 @@ export class RemoteUser extends User {
const offer_description = await this.peer.createOffer()
await this.peer.setLocalDescription(offer_description)
const offer = { type: offer_description.type, sdp: offer_description.sdp }
- log("webrtc", "sent offer", { a: offer })
+ log("webrtc", `sent offer: ${this.name}`, { a: offer })
this.room.websocket_send({ receiver: this.name, offer })
}
async on_offer(offer: RTCSessionDescriptionInit) {
this.negotiation_busy = true
- log("webrtc", "got offer", { a: offer })
+ log("webrtc", `got offer: ${this.name}`, { a: offer })
const offer_description = new RTCSessionDescription(offer)
await this.peer.setRemoteDescription(offer_description)
this.answer()
@@ -50,12 +51,12 @@ export class RemoteUser extends User {
const answer_description = await this.peer.createAnswer()
await this.peer.setLocalDescription(answer_description)
const answer = { type: answer_description.type, sdp: answer_description.sdp }
- log("webrtc", "sent answer", { a: answer })
+ log("webrtc", `sent answer: ${this.name}`, { a: answer })
this.room.websocket_send({ receiver: this.name, answer })
this.negotiation_busy = false
}
async on_answer(answer: RTCSessionDescriptionInit) {
- log("webrtc", "got answer", { a: answer })
+ log("webrtc", `got answer: ${this.name}`, { a: answer })
const answer_description = new RTCSessionDescription(answer)
await this.peer.setRemoteDescription(answer_description)
this.negotiation_busy = false
@@ -66,6 +67,7 @@ export class RemoteUser extends User {
}
leave() {
+ log("usermodel", `remove remote user: ${this.name}`)
this.peer.close()
this.room.el.removeChild(this.el)
}
diff --git a/source/client/rnnoise.ts b/source/client/rnnoise.ts
index 4c07bcb..71c73e6 100644
--- a/source/client/rnnoise.ts
+++ b/source/client/rnnoise.ts
@@ -15,13 +15,13 @@ declare global {
// TODO fix leak
export async function get_rnnoise_node(context: AudioContext): Promise<RNNoiseNode> {
- log("misc", "rnnoise enabled")
+ log("rnnoise", "enabled")
//@ts-ignore asfdasfd
let RNNoiseNode: typeof RNNoiseNode = window.RNNoiseNode;
let script: HTMLScriptElement;
if (!RNNoiseNode) {
- log("misc", "loading rnnoise...")
+ log("rnnoise", "loading wasm...")
script = document.createElement("script")
script.src = "/rnnoise/rnnoise-runtime.js"
script.defer = true
@@ -30,7 +30,7 @@ export async function get_rnnoise_node(context: AudioContext): Promise<RNNoiseNo
while (!window.RNNoiseNode) await new Promise<void>(r => setTimeout(() => r(), 100))
//@ts-ignore asfdsadfsafd
RNNoiseNode = window.RNNoiseNode;
- log("misc", "rnnoise loaded")
+ log("rnnoise", "loaded")
}
await RNNoiseNode.register(context)
diff --git a/source/client/user.ts b/source/client/user.ts
index 13b8545..bda875f 100644
--- a/source/client/user.ts
+++ b/source/client/user.ts
@@ -37,13 +37,6 @@ export abstract class User {
t.addEventListener("unmute", () => {
log("media", "track unmuted", t)
})
- //@ts-ignore a
- window.blub = t
- // setTimeout(() => {
- // console.log("ev");
- // t.dispatchEvent(new Event("ended"))
- // // t.dispatchEvent(new MediaStreamTrackEvent("ended", { track: t, bubbles: false, cancelable: true, composed: false }))
- // }, 5000)
}
setup_view() {
diff --git a/source/server/room.ts b/source/server/room.ts
index 34d847c..049a626 100644
--- a/source/server/room.ts
+++ b/source/server/room.ts
@@ -41,6 +41,8 @@ api.get("/signaling/:id", c => {
try { in_packet = JSON.parse(message) }
catch (_e) { return }
+ if (JSON.stringify(in_packet) == "{}") return // drop ping
+
console.log(`[${room_name}] ${user_name} -> ${in_packet.receiver ?? "*"}: ${message.substr(0, 100)}`)
const out_packet: SCPacket = { sender: user_name, data: in_packet }